본문 바로가기
알고리즘

[프로그래머스- 124나라의 숫자][파이썬] -13일차

by Jyujae 2022. 6. 7.

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


[1,2,4] 리스트를 만들어두고 리스트를 뺑뺑이 돌려야지! 라는 접근을 했지만, 2자리가 넘어가는 로직을 처리하지 못해서

실패해버렸다

 

key point: while문으로 접근(n을 계속 빼면서), 자리수가 커지는 로직 처리

 

1. key point

 

먼저, while의 기준을 1이상으로 두고, 즉 1보다 작아지면 while문을 종료하게 설정한다.

n에 1을 빼고, %3으로 한 값을 인덱스로 두고 계속 뺑뻉이를 돌리는 식이다

ex) n=3 -> (n-1) %3 = 2 -> nation-124[2]= 4

 

여기서 포인트는 2자리가 넘어가는, 즉 3진법으로 생각하면 0을 처리하는 방식이었다.

위의 로직대로라면 n=4면 1이 나오는 일이 생긴다. 우리가 원하는건 11

 

-- while 문에 따른 4 처리 방식

n=4(while 문에 부합)

n=3 (n-1을 해서)

answer=str(nation_124[0]), 즉 '1' + ''이 되고 {그럼 answer='1'인 상태}

n=1 ( n //3 =1 이니까)

while 1은 1이상이니까

n=1

n=0 (n-1을 해서)

answer= str(nation_124[0]), 즉 '1' + answer('1') = '11'

0//3 =0 임으로

while 문 종료