728x90
https://programmers.co.kr/learn/courses/30/lessons/12899
문제 설명
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.
124 나라에는 자연수만 존재합니다.124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
예를 들어서 124 나라에서 사용하는 숫자는 다음과 같이 변환됩니다.
문제가 쉬운 것 같으면서도 은근히 헷갈리는 문제다.
3이상 부터는 숫자가 10진법과 다르기 때문에 n이 3이상인 경우부터 체크했다.
def solution(n):
hab = 0
cnt = 0
while n > 3 :
if n%3 == 0 :
hab += 4 * (pow(10, cnt))
n = (n // 3) - 1
else :
hab += (n % 3) * (pow(10, cnt))
n = n // 3
cnt += 1
if n%3 ==0:
hab += 4*(pow(10, cnt))
else:
hab += (n%3)*(pow(10, cnt))
return str(hab)
n이 4일 경우
while문에 들어가서
else문으로 들어간다.
hab += (4%3)*(pow(10,0))
즉 1*1
hab은 1이 된다
n = 1
cnt = 1
while문은 멈추게 되고
그 아래 else문에 들어가서
hab += (1%3)*(pow(10,1))
즉 10이 더해진다
그럼 결국 hab은 11이 되고
4 = 11이 되게 된다.
풀어놓으면 별거 아닌데
코드짤때는 꽤나 머리가 아팠다.
728x90
'코딩테스트' 카테고리의 다른 글
[프로그래머스]최소직사각형 (0) | 2021.12.05 |
---|---|
[프로그래머스]나머지가 1이 되는 수 찾기 (0) | 2021.12.04 |
LG 코딩테스트 예제 - 마리오 게임 (0) | 2021.09.07 |
프로그래머스 - 2016년 (0) | 2021.08.10 |
프로그래머스 - 상호평가 (2주차) (0) | 2021.08.10 |