Chef.Yeon
Code Cook
Chef.Yeon
전체 방문자
오늘
어제
  • 분류 전체보기 (230)
    • 게임 개발 (1)
      • Unity (1)
    • Android (27)
      • Kotlin (19)
      • 우아한테크코스 5기 (4)
    • Language (11)
      • 파이썬 (3)
      • Java (7)
    • DB (2)
      • SQL (16)
    • Spring (25)
    • 코딩테스트 (56)
    • Git (1)
    • TIL (85)
    • DevOps (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • til
  • 백준
  • webflux
  • Android
  • 파이썬
  • MariaDB
  • rsocket
  • Wil
  • Docker
  • 문자열
  • 다이나믹 프로그래밍
  • 내림차순
  • grafana
  • 코틀린 인 액션
  • 우아한테크코스
  • ec2
  • 코틀린
  • kotlin
  • elasticsearch
  • 레포지토리
  • SQL
  • enum
  • java
  • 에라토스테네스의 체
  • kibana
  • 프리코스
  • 안드로이드
  • 코딩테스트
  • 프로그래머스
  • spring

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chef.Yeon

Code Cook

코딩테스트

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

2022. 9. 20. 18:04

문제 설명

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

 

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

 

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

 

제한 사항

입력된 수, num은 1 이상 8,000,000 미만인 정수

 

입출력 예

n result
6 8
16 4
626331 -1

 

내 풀이

while문을 사용해 n=n/2 또는 n*3+1 할 때마다 count 증가를 통해 작업을 몇 번 반복했는지 체크

n == 1이 되면 while문을 종료하고 count 값을 return

def solution(n):
    count = 0
    if n == 1:
        return 0
    while True:
        n = n/2 if n%2==0 else n*3+1
        count +=1
        if count == 500 :
            return -1
        if n == 1 :
            break
    return count

 

다른 사람 풀이

for문을 통해 작업이 500번 수행된 이후는 -1 return

n==1인 경우 작업을 반복한 수인 i+1 값 return

입력된 값이 1인 경우 return 0 추가하면 될 듯

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
728x90

'코딩테스트' 카테고리의 다른 글

[프로그래머스/파이썬] 서울에서 김서방 찾기  (0) 2022.09.20
[프로그래머스/파이썬] 두 정수 사이의 합  (0) 2022.09.20
[프로그래머스/파이썬] x만큼 간격이 있는 n개의 숫자  (0) 2022.09.19
[프로그래머스/파이썬] 문자열을 정수로 바꾸기  (0) 2022.09.19
[프로그래머스/파이썬] 나머지가 1이 되는 수 찾기  (0) 2022.09.19
    '코딩테스트' 카테고리의 다른 글
    • [프로그래머스/파이썬] 서울에서 김서방 찾기
    • [프로그래머스/파이썬] 두 정수 사이의 합
    • [프로그래머스/파이썬] x만큼 간격이 있는 n개의 숫자
    • [프로그래머스/파이썬] 문자열을 정수로 바꾸기
    Chef.Yeon
    Chef.Yeon
    보기 좋고 깔끔한 코드를 요리하기 위해 노력하고 있습니다.

    티스토리툴바