백준_1256 사전 (조합 순열)Algorithm/Algorithm 문제2024. 4. 8. 02:14
Table of Contents
거의 4시간 들여다본 문제..
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class BJ_1256_사전 {
public static void main(String[] args) throws IOException {
StringBuilder result = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
long k = Long.parseLong(st.nextToken());
long[][] d = new long[n + m + 1][n + m + 1];
int i, j;
for (i=0; i<n+m+1; i++) {
d[i][0] = 1;
d[i][1] = i;
d[i][i] = 1;
}
for (i=3; i<n+m+1; i++) {
for (j=2; j<i+1; j++) {
d[i][j] = d[i-1][j-1] + d[i-1][j];
if (d[i][j] > 1000000000) {
d[i][j] = 1000000001;
}
}
}
if (d[n+m][m] < k) {
System.out.println(result.append(-1));
return;
}
while(!(n==0 && m==0)) {
if (d[n+m-1][m] >= k) { //a를 선택
result.append('a');
n--; //남은 a 개수
} else { //z를 선택
result.append('z');
k -= d[n+m-1][m];
m--;
}
}
System.out.println(result);
}
}
'Algorithm > Algorithm 문제' 카테고리의 다른 글
백준_1463 1로 만들기 (DP) (0) | 2024.04.11 |
---|---|
백준_1947 선물 전달 (조합 순열) (0) | 2024.04.08 |
백준_1722 순열의 순서 (조합 순열) (0) | 2024.04.06 |
백준_13251 조약돌 꺼내기 (0) | 2024.04.01 |
백준_1010 다리 놓기 (1) | 2024.04.01 |
@kjyyjk :: 녕의 학습 기록
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!