https://www.acmicpc.net/problem/29198
1. 아이디어
입력의 각 문자열에 대해 문자들을 사전순으로 재배치한 후 문자열들을 다시 사전순으로 정렬하면 앞에서 K개의 문자열을 사전순으로 뽑아서 문자들을 사전순으로 재배치했을 때 사전순으로 가장 앞에 오는 문자열을 만들 수 있다.
2. 문제풀이
String을 char 타입 배열로 변환하면 정렬을 통해 문자들을 재배치할 수 있다. 이를 StringBuilder로 합쳐서 다시 String으로 만드는 것을 활용해서 구현했다.
3. 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb;
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
int K = Integer.parseInt(st.nextToken());
String[] arr = new String[N];
for (int i = 0; i < N; i++) {
char[] input = br.readLine().toCharArray();
Arrays.sort(input);
sb = new StringBuilder();
for (char c : input) {
sb.append(c);
}
arr[i] = sb.toString();
}
Arrays.sort(arr);
sb = new StringBuilder();
for (int i = 0; i < K; i++) {
sb.append(arr[i]);
}
char[] charArr = sb.toString().toCharArray();
Arrays.sort(charArr);
sb = new StringBuilder();
for (char c : charArr) {
sb.append(c);
}
bw.write(sb.toString());
bw.flush();
}
}
4. 후기
'코딩테스트 준비 > 백준' 카테고리의 다른 글
[백준] 15595번 - 정답 비율 계산하기 [Java] (0) | 2025.01.22 |
---|---|
[백준] 16200번 - 해커톤 [Java] (0) | 2025.01.22 |
[백준] 28094번 - 기말고사 작품 전시 [Java] (0) | 2025.01.22 |
[백준] 23797번 - 개구리 [Java] (0) | 2025.01.22 |
[백준] 28113번 - 정보섬의 대중교통 [Java] (0) | 2025.01.22 |