-
[프로그래머스] 124 나라의 숫자Engineering WIKI/Programmers 2022. 5. 4. 17:03
코딩테스트 연습 - 124 나라의 숫자
programmers.co.kr
다른사람 풀이 (성공)
def solution(n): answer = '' n_array = ["1", "2", "4"] while n > 0: n -= 1 answer = n_array[n % 3] + answer n //= 3 return answer
하나의 배열을 만들어 줍니다.n_array=["1","2","4"] 를 만들어서 계속 뺑뺑이 돌려줍니다.
숫자 n에서 n%3을 했을 때, 0,1,2가 나오게 됩니다.
<출력물>0이 나오면 11이 나오면 23이 나오면 4
이렇게 출력이 되도록 합니다.n-1을 하고, n%3을 해서 배열결과물을 출력합니다.
n=1이면, n-1(1-1=0)을 해서 n%3(0%3=0)을 해서 1 출력n=2이면, n-1(2-1=1)을 해서 n%3(1%3=1)을 해서 2 출력n=3이면, n-1(3-1=2)을 해서 n%3(2%3=2)을 해서 4 출력n=4이면, n-1(4-1=3)을 해서 n%3(3%3=0)을 해서 1 출력근데, 여기서 n=4는 11로 나와야 하잖아요!
흠...3인 경우에는 n//3을 해서 1로 만들어주고 다시 n-1해서 0으로 되게끔 하면 되겠네요!그 부분을 출력물과 더해주면 11이 되네요!
즉, 0//3, 1//3, 2//3은 다 0이 되서 돌아가지 않지만,3//3부터는 1이 되니깐 두자리를 채워줄 수 있어요!!
n=4부터 다시 정리할게요!
- n=4
- n-1(4-1=3)을 해서 n%3(3%3=0)을 해서 1 출력
- n//3(3//3=1)을 해서 n-1(1-1=0)을 해서 1출력 => '1'+'1'
- n=5
- n-1(5-1=4)을 해서 n%3(4%3=1)을 해서 2 출력
- n//3(4//3=1)을 해서 n-1(1-1=0)을 해서 1출력 => '2'+'1'
- n=6
- n-1(6-1=5)을 해서 n%3(5%3=2)을 해서 4 출력
- n//3(5//3=1)을 해서 n-1(1-1=0)을 해서 1출력 => '4'+'1'
- n=7
- n-1(7-1=6)을 해서 n%3(6%3=0)을 해서 1 출력
- n//3(6//3=2)을 해서 n-1(2-1=1)을 해서 2출력 => '1'+'2'
이런식으로 결과물을 도출할 수 있습니다. 출력된 결과물 두개를 반대로 뒤집어야 겠네요!첫번째 줄에서 나온 결과물을 뒤로 보낼 수 있도록 코드를 만들어 봅시닷!!!
다른사람 풀이2 (성공)
def solution(n): answer = '' while n: if n % 3: answer += str(n % 3) n //= 3 else: answer += "4" n = n//3 - 1 return answer[::-1]
'Engineering WIKI > Programmers' 카테고리의 다른 글
[프로그래머스] 카펫 (0) 2022.05.17 [프로그래머스] H-Index (정렬) (0) 2022.05.13 [프로그래머스] 행렬 테두리 회전하기 (0) 2022.05.10 [프로그래머스] 타겟넘버 (0) 2022.05.06 [프로그래머스] 오픈채팅방 (0) 2022.05.02 [프로그래머스] 문자열 압축 (0) 2022.05.02 [프로그래머스] 직사각형 별찍기 (0) 2022.05.01 [프로그래머스] x만큼 간격이 있는 n개의 숫자 (0) 2022.04.30 - n=4