일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- java #자바
- css #생활코딩 #웹
- 재귀
- Dijkstra
- 투포인터
- 파이썬 #알고리즘 #코딩테스트 #프로그래머스
- 프로그래머스 #파이썬 #알고리즘 #코딩테스트
- 백준 #알고리즘 #파이썬 #코딩테스트
- DFS
- 다이나믹프로그래밍
- 알고리즘
- 프로그래머스 #파이썬 #코딩테스트 #알고리즘
- 백준 #파이썬 #알고리즘 #코딩테스트
- 백트랙킹
- css #웹 #생활코딩
- java #자바 #동빈나
- 파이썬 #백준 #알고리즘 #코딩테스트
- java #자바 #생활코딩
- react #리액트 #동빈나
- 백준
- 프로그래머스
- PYTHON
- BFS
- 자바 #java
- 코딩테스트
- 파이썬
- dp
- java #자바 #나동빈
- react #리액트 #동빈나 #나동빈 #유튜브강의
- 다익스트라
Archives
- Today
- Total
커리까지
[백준] 12101번 1,2,3 더하기 2 파이썬 본문
728x90
SMALL
문제
정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다.
- 1+1+1+1
- 1+1+2
- 1+2+1
- 2+1+1
- 2+2
- 1+3
- 3+1
이를 사전순으로 정렬하면 다음과 같이 된다.
- 1+1+1+1
- 1+1+2
- 1+2+1
- 1+3
- 2+1+1
- 2+2
- 3+1
정수 n과 k가 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법 중에서 k번째로 오는 식을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 정수 n과 k가 주어진다. n은 양수이며 11보다 작고, k는 231-1보다 작거나 같은 자연수이다.
출력
n을 1, 2, 3의 합으로 나타내는 방법 중에서 사전 순으로 k번째에 오는 것을 출력한다. k번째 오는 식이 없는 경우에는 -1을 출력한다.
예제 입력 1
4 3
예제 출력 1
1+2+1
제출 답안
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
def recur(_sum, answer):
global cnt
if _sum > n:
return
if n == _sum:
cnt += 1
if cnt == k:
print("+".join(answer))
exit()
for i in (1, 2, 3):
answer.append(f"{i}")
recur(_sum + i, answer)
answer.pop()
cnt = 0
recur(0, [])
print(-1)
728x90
LIST
'알고리즘 > 풀이' 카테고리의 다른 글
[백준] 16943번 숫자 재배치 파이썬 (0) | 2023.08.21 |
---|---|
[백준] 18290번 NM과 K (1) 파이썬 (0) | 2023.08.20 |
1342번 행운의 문자열 파이썬 (0) | 2023.08.18 |
[백준] 17391번 무한부스터 파이썬 (0) | 2023.08.11 |
[백준] 15723번 n단 논법 파이썬 (0) | 2023.08.11 |
Comments