링크
https://school.programmers.co.kr/learn/courses/30/lessons/12943
문제
정답 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로 업데이트됨
'[업무 지식] > Algorithm' 카테고리의 다른 글
[filter] 나누어 떨어지는 숫자 배열 (0) | 2024.12.19 |
---|---|
[index] 서울에서 김서방 찾기 (0) | 2024.12.18 |
[range] 두 정수 사이의 합 (0) | 2024.12.17 |
[하샤드 수] 숫자 x가 자신의 자릿수의 합으로 나누어 떨어지는 수 (0) | 2024.12.17 |
[정수 n 순서 정렬] 정수 내림차순으로 배치하기 (0) | 2024.12.17 |