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점을 받을 수 있다.

반응형