Algorithm/백준
[Java] 백준 29198번 - 이번에는 C번이 문자열 (실버3)
애기 개발자
2025. 2. 26. 13:49
반응형
혼자 힘으로 풀었는가? O
알고리즘 분류
- 정렬
- 그리디
- 문자열
https://www.acmicpc.net/problem/29198
입력받은 문자열을 정렬하고
문자열 배열을 정렬해서
가장 앞의 K개를 합친 후 다시 정렬하는 문제이다.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
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());
int k = Integer.parseInt(st.nextToken());
String [] data = new String[n];
for(int i=0; i<n; i++) {
String tmp = br.readLine();
char [] ch = tmp.toCharArray();
Arrays.sort(ch); //입력받은 문자를 정렬
data[i] = new String(ch);
}
Arrays.sort(data); //문자열 배열을 정렬
StringBuilder sb = new StringBuilder();
for(int i=0;i <k; i++) { //사전 순으로 가장 앞에오는 K개 합치기
sb.append(data[i]);
}
char [] ch = sb.toString().toCharArray();
Arrays.sort(ch); //합쳐진 문자열을 정렬
String result = new String(ch);
System.out.println(result);
}
}
처음엔 입력받은 문자를 정렬하지 않고 그냥 문자열 배열에 입력했더니 35점을 받았다.
입력 받는것 부터 정렬해서 넣어야 100점을 받을 수 있다.
반응형