[프로그래머스 / Level 1] 콜라츠 추측 (파이썬)

2022. 3. 22. 02:49·🎲 알고리즘 공부/프로그래머스

📝 문제

https://programmers.co.kr/learn/courses/30/lessons/12943

 

코딩테스트 연습 - 콜라츠 추측

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2

programmers.co.kr

 

🎨 풀이

💡 첫번째 시도

- 이 문제는 콜라츠라는 사람이 추측한 내용을 코드로 옮기는 것이였다. 내용은 다음과 같다.

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
def solution(num):
    answer = -1
    
    for i in range(0,501):
        if num % 2 == 0 :
            num /= 2
        else :
            num = num * 3 + 1
        if num == 1 :
            answer = i + 1
            break;

    return answer

> answer에 먼저 -1이 될 때를 넣어두고, 콜라츠의 추측대로 실행한 후 만약 500번이 지나기 전에 num이 1이 된다면 그 때 answer에 횟수를 넣어주는 방법으로 코딩을 했다. 다른 거는 다 잘 통과가 되었는데 테스트 13번만 유일하게 오류가 뜨더라. 질문하기 창에서 13번에 관한 정보를 찾아보니 13번은 num이 1일때의 경우라 1에 대한 처리를 해주어야한다고 했다. 그래서 코드를 다음과 같이 고쳐보았다.

 

💡 두번째 시도

def solution(num):
    answer = -1
    
    if num == 1:
        answer = 0
        return answer
    
    for i in range(0,501):
        if num % 2 == 0 :
            num /= 2
        else :
            num = num * 3 + 1
        if num == 1 :
            answer = i + 1
            break;

    return answer

> num이 1일때 answer에 0을 넣고 바로 return하는 코드를 짰더니 성공했다. (answer에 0을 넣는 이유는, num이 1인 경우를 찾기 위해서 이 코드를 실행하는 것인데 입력값부터 이미 1이면 그 방법을 쓸 필요가 없기 때문이다)

 

⭐ 느낀점

> 문제만 보고는 코드 내용대로 짜면 될 것 같아 조금 자신있었는데, 케이스 처리를 제대로 생각하지 못해서 틀렸던 것 같다. 입력값을 제대로 보고 고민해봐야겠다는 생각이 조금 든다.

'🎲 알고리즘 공부 > 프로그래머스' 카테고리의 다른 글

[프로그래머스 / Level 1] x만큼 간격이 있는 n개의 숫자 (파이썬)  (0) 2022.03.27
[프로그래머스 / Level 1] 행렬의 덧셈 (파이썬)  (0) 2022.03.26
[프로그래머스 / Level 1] 핸드폰 번호 가리기 (파이썬)  (0) 2022.03.25
[프로그래머스 / Level 1] 하샤드 수 (파이썬)  (0) 2022.03.24
[프로그래머스 / Level 1] 평균 구하기 (파이썬)  (0) 2022.03.23
'🎲 알고리즘 공부/프로그래머스' 카테고리의 다른 글
  • [프로그래머스 / Level 1] 행렬의 덧셈 (파이썬)
  • [프로그래머스 / Level 1] 핸드폰 번호 가리기 (파이썬)
  • [프로그래머스 / Level 1] 하샤드 수 (파이썬)
  • [프로그래머스 / Level 1] 평균 구하기 (파이썬)
듬듬
듬듬
  • 듬듬
    두드림
    듬듬
  • 전체
    오늘
    어제
    • 분류 전체보기 (267)
      • 📑 신입일기 (35)
      • 🎲 알고리즘 공부 (192)
        • 프로그래머스 (76)
        • 백준 (96)
        • 코드업 (19)
      • 📘 독서 (0)
      • 💌 일상 (12)
        • 일상 (5)
        • 기록 (7)
      • 📜 자격증 (2)
        • 정보처리기사 (2)
      • 학교 공부 (20)
        • ICT 개론 (14)
        • 리눅스 (6)
      • ChatGPT 랑 놀기 (0)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    컨텐더스
    신입일기
    충무로
    오버워치
    스프링부트
    파이썬
    연습문제
    50문답
    티스토리챌린지
    프로그래머스
    일기
    오블완
    코민이
    codeup
    찬양추천
    백준
    코린이
    til
    코드업
    폰켓몬
    카카오
    정보처리기사
    행렬덧셈
    스프링 부트
    정처기
    피보나치수
    6월 목표
    nodejs
    코테
    BOJ
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
듬듬
[프로그래머스 / Level 1] 콜라츠 추측 (파이썬)
상단으로

티스토리툴바