문제
https://www.acmicpc.net/problem/13417
학습 키워드
- 그리디
풀이 및 코드
주어진 문자열의 맨 앞부터 문자를 차례대로 뽑으면서 빈 문자열부터 시작해, 만들고 있는 문자열의 왼쪽에 놓을지 혹은 오른쪽 끝에 놓을지 결정하는 문제이다.
각 문자를 선택할 때마다 왼쪽 끝에 놓았을 때 완성되는 문자열과 오른쪽 끝에 놓았을 때 문자열을 비교해가면서 문자열 순서가 빠른 문자열로 완성해나가면 된다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
StringBuilder answer = new StringBuilder();
for (int t = 0; t < T; t++) {
int N = Integer.parseInt(br.readLine());
char[] arr = new char[N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < N; i++) {
arr[i] = st.nextToken().charAt(0);
}
answer.append(solution(arr, N) + "\n");
}
System.out.println(answer);
}
private static String solution(char[] arr, int N) {
String answer = "";
for (int i = 0; i < N; i++) {
if ((answer + arr[i]).compareTo(arr[i] + answer) <= 0) {
answer = answer + arr[i];
} else {
answer = arr[i] + answer;
}
}
return answer;
}
}
'알고리즘 > 백준' 카테고리의 다른 글
99클럽 코테 스터디 17일차 TIL (31926번: 밤양갱) (2) | 2024.11.13 |
---|---|
99클럽 코테 스터디 16일차 TIL (2847번: 게임을 만든 동준이) (2) | 2024.11.12 |
99클럽 코테 스터디 14일차 TIL (14916번: 거스름돈) (0) | 2024.11.11 |
99클럽 코테 스터디 12일차 TIL (7569번: 토마토) (0) | 2024.11.08 |
99클럽 코테 스터디 11일차 TIL (25195번: Yes or yes) (4) | 2024.11.07 |
댓글