Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 다이나믹프로그래밍
- DFS
- GROUP BY
- 크루스칼
- 재귀
- 자료구조
- 다이나믹 프로그래밍
- 브루트포스
- 그래프 탐색
- 플로이드-워셜
- 그리디
- 백트래킹
- 시뮬레이션
- 에라토스테네스의 체
- 해시
- 서브쿼리
- 누적합
- 다시
- MST
- 트리
- BFS
- 투포인터
- 우선순위큐
- DP
- join
- 수학
- 구현
- 다익스트라
- 분할정복
- 그래프 이론
Archives
- Today
- Total
기록하고 까먹지 말기
124나라의 숫자 본문
날짜 : 2023. 09. 26
사용 언어 : python
문제
코드
시간초과 코드
def solution(n):
nums = [1, 2, 4]
res = [1]
cnt = 0
def carry(idx):
if idx == -1:
res.insert(0, 1)
return
if res[idx] == 1:
res[idx] = 2
elif res[idx] == 2:
res[idx] = 4
else:
res[idx] = 1
carry(idx-1)
return
while True:
cnt += 1
if cnt == n: break
idx = len(res) - 1
if res[idx] == 1:
res[idx] = 2
continue
elif res[idx] == 2:
res[idx] = 4
continue
else:
res[idx] = 1
carry(idx-1)
answer = ""
for i in res:
answer += str(i)
return answer
정답
def solution(n):
answer = ''
nums = [1, 2, 4]
while n > 0:
n -= 1
answer = str(nums[n % 3]) + answer
n = n // 3
return answer
풀이
- 보통의 3진수로 표현하지만, 0 1 2로만 표현하는 3진수와는 달리 1 2 4로 표현한다.
- 인덱스가 0으로 시작하기 때문에 1을 차감하면서 진행하고, 앞전부터 진행하기 때문에 앞에 문자열을 붙이는 방식으로 전개한다.
알게된 점
- 일반적으로 carry가 발생하는 것을 차용해 문제를 풀었고 실제로 답은 전부 맞았다.
- 그렇지만 TLE가 발생해 다른 풀이를 찾아보던 중 3진수 방식을 확인했고, (n -= 1) 부분에서 좀 많은 고민을 했던 것 같다.
참고 사이트
- https://velog.io/@eerang/PYTHON-프로그래머스Level2-124나라의-숫자
[PYTHON-프로그래머스][Level2]-124나라의 숫자
124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다.124 나라에는 자연수만 존재합니다.124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다.
velog.io
'전공 > 프로그래머스' 카테고리의 다른 글
게임 맵 최단거리 (0) | 2023.09.29 |
---|---|
(SQL) 조건에 맞는 사용자와 총 거래금액 조회하기 (0) | 2023.09.28 |
이진 변환 반복하기 (0) | 2023.09.25 |
N-Queen (0) | 2023.09.13 |
최솟값 만들기 (0) | 2023.09.12 |