문제접근
- while로 num이 1이될때까지 돌려야하고
- if 조건문과 cnt변수를 사용해서 cnt를 출력한다.
- 다중 if 문을 사용할 때 조심한다.
문제풀이
내풀이
def solution(num):
cnt = 0
while num != 1:
if num % 2 == 0:
num = round(num/2)
cnt += 1
elif num % 2 == 1:
num = num*3 + 1
cnt += 1
if cnt >= 500:
cnt = -1
return cnt
다른사람풀이
def collatz(num):
for i in range(500):
num = num / 2 if num % 2 == 0 else num*3 + 1
if num == 1:
return i + 1
return -1
- for 범위를 500으로 두었고 cnt대신 i를 출력
- if문을 1줄로 처리하였다
'Programmers > 1단계' 카테고리의 다른 글
[1단계][연습문제] 이상한 문자 만들기 (0) | 2022.03.20 |
---|---|
[1단계][연습문제] 최대공약수와 최소공배수 (0) | 2022.03.19 |
[1단계] [연습문제] 같은 문자는 싫어 (0) | 2022.03.16 |
[1단계][연습문제] 문자열 내 p와 y의 개수 (0) | 2022.03.15 |
[1단계][연습문제] 문자열 내림차순으로 배치하기 (0) | 2022.03.14 |