문제 : https://www.acmicpc.net/problem/13417
⭐️탐욕법(Greedy)⭐️
탐욕법(Greedy)알고리즘이란 현재 상황에서 가장 좋은 것(최선의 선택)을 고르는 알고리즘을 말합니다.
ex) 거스름돈 구하기
🗝️ 현재의 순간에 최선을 선택을 하는 경우를 구현
🗝️ 문자 비교시 문자의 순서가 빠른 것을 왼쪽으로 정렬한다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args)throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int trierCnt = Integer.parseInt(st.nextToken());
StringBuilder total = new StringBuilder();
for(int i=0; i<trierCnt; i++){
StringBuilder stb = new StringBuilder();
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
char[] Narr = new char[N];
st = new StringTokenizer(br.readLine());
for(int j = 0;j<N;j++){
Narr[j]= st.nextToken().toCharArray()[0];
}
stb.append(Narr[0]);
for(int k=1;k<Narr.length;k++){
// 첫번째 문자보다 작거나 같으면 왼쪽에 삽입
if(Narr[k]<=stb.charAt(0)){
stb.insert(0,Narr[k]);
}else{
// 오른쪽 삽입
stb.append(Narr[k]);
}
}
total.append(stb).append("/");
}
for(int i=0; i<trierCnt;i++){
System.out.println(total.toString().split("/")[i]);
}
}
}