문제
1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
내가 푼 풀이
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | def collatz(num): count = 0 while True: if num%2 == 0: num = num/2 else: num = num*3 +1 count = count + 1 if num == 1: break; if count == 500: return -1 return count # 아래는 테스트로 출력해 보기 위한 코드입니다. print(collatz(6)) | cs |
문제 조건에 맞추어서 코드로 구현한 제일 무난하게 푼 것이다.
'Computer Science > Problem Solving' 카테고리의 다른 글
[tryhelloworld]하샤드 수 by파이썬 (0) | 2017.08.16 |
---|---|
[tryhelloworld]딕셔너리 정렬 by파이썬 (0) | 2017.08.16 |
[tryhelloworld]두 정수 사이의 합 by파이썬 (0) | 2017.08.15 |
[tryhelloworld] 문자열 다루기 기본 by파이썬 (0) | 2017.08.15 |
[tryhelloword]가운데 글자 가져오기 by 파이썬 (0) | 2017.08.15 |