[업무 지식]/Algorithm
[콜라츠 추측]
에디터 윤슬
2024. 12. 18. 09:54
링크
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):
- 변수에 저장된 값을 `//` 연산으로 계산한 결과로 업데이트합니다.
- 예:
- 1. `//` (Floor Division):
x = 7
x //= 3 # x는 이제 2로 업데이트됨