첫번째 코드
이전의 조합 문제와 비슷한 문제지만,
조합을 어떻게 꾸려 나가야할지에 대한 고민이 많이 필요할 것 같다.
코드는 책을 참고했고,
헷갈렸던 부분은 m+n이 전체 개수임을 계속 까먹는 다는 것!!
import sys
input = sys.stdin.readline
n, m, k = map(int, input().split())
dp = [[0 for _ in range(202)] for i in range(202)]
for i in range(201):
for j in range(i+1):
if j == 0 or j == i:
dp[i][j] = 1
else:
dp[i][j] = dp[i-1][j] + dp[i-1][j-1]
if dp[i][j] > 1000000000:
dp[i][j] = 1000000001
if dp[n+m][m] < k:
print(-1)
else:
while not (n == 0 and m == 0):
if dp[n-1+m][m] >= k:
print('a', end = '')
n -= 1
else:
print('z', end = '')
k -= dp[n-1+m][m]
m -= 1
통과
링크
programmers/백준/Gold/1256. 사전 at main · ornni/programmers
repository for recording Programmers Algorithm problem solving - ornni/programmers
github.com
'코딩 테스트 > do it! 알고리즘 코딩테스트' 카테고리의 다른 글
084 1로 만들기 (0) | 2024.08.22 |
---|---|
081 순열의 순서 (0) | 2024.08.20 |
080 조약돌 꺼내기 (0) | 2024.08.15 |
079 다리 놓기 (0) | 2024.08.15 |
078 부녀회장이 될테야 (0) | 2024.08.13 |