코딩테스트

프로그래머스 - 124 나라의 숫자

SigmoidFunction 2021. 9. 15. 16:08
728x90

https://programmers.co.kr/learn/courses/30/lessons/12899

 

코딩테스트 연습 - 124 나라의 숫자

 

programmers.co.kr

 

문제 설명
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