![[프로그래머스] 124 나라의 숫자 (python)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwECM5%2FbtsHUAFzUsY%2FnJ7umLiGnXiz4LnGhv5DuK%2Fimg.jpg)
https://school.programmers.co.kr/learn/courses/30/lessons/12899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
124 나라는 3진법과 유사하다.
- 1, 2, 4만 사용
- 10진법이 4일 경우에 자릿수가 하나 증가함
- 10진법이 7, 10일 경우에 124 나라 숫자 10의 자릿수가 변경됨
10진법을 3진법으로 바꿀 때처럼, 3으로 나눌 수 없을 때까지 나누고 역순으로 변환된 수를 뒤집으면 된다.
3진법에서의 나머지가 124 나라일 때의 경우로 대치해주면 된다.
- 0일 때, 1
- 1일 때, 2
- 2일 때, 4
def solution(n):
num = ['1', '2', '4']
answer = ''
while n > 0:
n -= 1 # 인덱스 조정
answer = num[n % 3] + answer # 문자열 추가, 새로운 값이 문자열 뒤에 붙으므로 후에 역순으로 변경해줄 필요 없음
n //= 3
return answer
코드에서 조금 헷갈릴만한 부분이, n을 1 빼주는 부분일 것이다.
3의 배수일 때 4가 나올 수 있도록 조정하는 것이다.
예를 들어, n이 3일 때 4가 나와야 한다. 근데 num[3 % 3]은 num[0]이고, num[0]은 1이다.
이렇게 되면 우리가 예상한 값과 다르게 나온다.
그래서 1을 빼주면 num[2 % 3]이 되어 num[2]가 되고, num[2]는 4이므로 기대한 값이 잘 나오게 된다.
이 부분만 신경 써주면 쉽게 풀 수 있을 것이다.
references
https://school.programmers.co.kr/learn/courses/30/lessons/12899
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'CSE > 알고리즘 (algorithm)' 카테고리의 다른 글
[프로그래머스] 줄 서는 방법 (python) (0) | 2024.06.12 |
---|---|
[Goorm level] 회전 배열 (python) (0) | 2024.06.11 |
[프로그래머스] 오픈채팅방 (python) (0) | 2024.06.11 |
[프로그래머스] 구명보트 (python) (0) | 2024.06.11 |
[프로그래머스] 스킬트리 (python) (0) | 2024.06.11 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!