본문 바로가기
[업무 지식]/Algorithm

[콜라츠 추측]

by 에디터 윤슬 2024. 12. 18.

링크

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

문제

정답 1

def solution(num):
    count = 0
    while num != 1:
        if count >= 500:
            return -1
        if num % 2 == 0:
            num //= 2
        else:
            num = num * 3 + 1
        count += 1
    return count

정답 2

def solution(num):
    for count in range(500):
        if num == 1:
            return count
        num = num // 2 if num % 2 == 0 else num * 3 + 1
    return -1

 

새롭게 이해한 내용

  • `//`와 `//=`의 차이
    • 1. `//` (Floor Division):
      • 두 숫자를 나누고 소수점 이하를 버린 몫(정수 부분)을 반환합니다.
      • 예: 7//3 = 2
    • 2. `//= ` (Floor Division Assignment):
      • 변수에 저장된 값을 `//` 연산으로 계산한 결과로 업데이트합니다.
      • 예:
x = 7
x //= 3  # x는 이제 2로 업데이트됨