[programmers] 프로그래머스 Level1 콜라츠 추측
(파이썬 Python)
* 문제출처 : 프로그래머스 코딩 테스트 연습, 알고리즘 문제
* 소스 코드 및 정리한 내용의 저작권은 글쓴이에게 있습니다.
프로그래머스 Level1 콜라츠 추측
1) 문제
2) 풀이 과정
1. num 이 1이 되면 그때의 카운팅(answer)을 return 한다를 초기 조건 설정(단, 반복 세팅 500 일 때 이 외에는 -1 리턴)
2. 1이 아닐 때를 기준으로 num % 2 == 0 이면 다음과 같은 num을 반환과 동시에 카운팅
3. 1이 아닐 때를 기준으로 num % 2 == 0 이 아니면 다음과 같은 num을 반환과 동시에 카운팅
3) 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def solution(num):
answer = 0
for i in range(500):
if(num == 1):
return answer
else:
if(num % 2 == 0):
num = num // 2
answer += 1
else:
num = num * 3 + 1
answer += 1
return -1
|
cs |
4) 정리 노트
하.. 상당히 오래 걸린 문제였다. 처음 num == 1 일 때를 제외하고 다음과 같은 식을 썼었다. 왜 틀렸는지를 한참 고민하고 나서야 알게 됐다.
짝수와 홀수를 먼저 받게 된다면 첫 번째로 홀수에서 1을 받게 되면, elif 2번째에 걸려버리게 된다.
즉 짝수, 홀수, 1일 때의 경우에 있어서 num이 1로 들어오게 되면 홀수에 카운팅이 돼버려서 틀린 답안이 돼버렸다. num == 1이라는 예외를 생각하지 못했던 게 컸다.
부끄러운 코드다..
< < 처음 제출한 틀린 답안 > >
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def solution(num):
answer = 0
for i in range(500):
if(num%2==0):
num = num // 2
answer += 1
elif(num % 2 != 0):
num = num * 3 + 1
answer += 1
elif(num==1):
return answer
return -1
|
cs |
* 순서를 잘 주고 조건을 잘 찾아야 한다는 것을 느꼈다.
* 항상 키보드에 손이 가기 전에 종이에다가 적어 문제를 풀어 나가 볼 것.
: 지금 까지는 운 좋게 맞았지만, 문제가 길어질수록 적어 나가는 것이 중요하다고 생각한다.
'*Algorithm > Programmers_Level1' 카테고리의 다른 글
[programmers] 프로그래머스 Level1 시저 암호(파이썬 Python) (0) | 2020.10.10 |
---|---|
[programmers] 프로그래머스 Level1 이상한 문자 만들기(파이썬 Python) (0) | 2020.10.05 |
[programmers] 프로그래머스 Level1 x만큼 간격이 있는 n개의 숫자(파이썬 Python) (0) | 2020.09.03 |
[programmers] 프로그래머스 Level1 약수의 합(파이썬 Python) (0) | 2020.09.03 |
[programmers] 프로그래머스 Level1 정수 제곱근 판별(파이썬 Python) (0) | 2020.09.03 |
댓글