728x90
문제 13417
13417번: 카드 문자열
입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처
www.acmicpc.net
[ 문제 풀이 ]
입력받은 순서대로 문자를 가져와서 적절하게 배치하여 사전 순으로 가장 빠른 문자열을 만들어야 합니다. 문제에서 나온 조건대로 도식화하면 아래와 같습니다.

문자열의 맨 앞의 문자와 맨 뒤의 문자를 각각 저장하기 위한 변수를 만들고, 맨 앞과 맨 뒤에 배치하기 위해 Deque을 사용하였습니다.
[ 코드 ]
import java.io.*;
import java.util.*;
public class Main {
private static Queue<String> cards = new LinkedList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
cards.offer(st.nextToken());
}
Deque<String> result = new LinkedList<>();
String first = cards.poll(); // 첫 글자
String last = first; // 마지막 글자
result.offer(first);
while (!cards.isEmpty()) {
String str = cards.poll();
if (first.compareTo(str) >= 0) { // first 보다 작거나 같으면 first 업데이트
first = str;
result.addFirst(first);
} else { // last 업데이트
last = str;
result.addLast(last);
}
}
while (!result.isEmpty()) {
bw.write(result.poll());
}
bw.newLine();
bw.flush();
}
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 2234번: 성곽 (JAVA) (1) | 2023.10.21 |
---|---|
[Baekjoon] 백준 1388번: 바닥장식 (JAVA) (1) | 2023.10.20 |
[Baekjoon] 백준 21924번: 도시 건설 (JAVA) (0) | 2023.10.14 |
[Baekjoon] 백준 14567번: 선수과목 (JAVA) (0) | 2023.10.14 |
[Baekjoon] 백준 11085번: 군사 이동 (JAVA) (0) | 2023.10.12 |