문제(출처: https://www.acmicpc.net/problem/15198)
< NKD >
문제 풀이
ArrayList를 활용하여 목록에 없을 경우 추가, 목록에 있을 경우 제거 후 추가를 통해 답을 구한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
public class _15198_ { // NKD
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int k = Integer.parseInt(bf.readLine());
int n = Integer.parseInt(bf.readLine());
ArrayList<String> list = new ArrayList<>();
for (int i = 0; i < n; i++) {
String str = bf.readLine();
if (list.contains(str)) {
list.remove(str);
list.add(str);
} else {
if (list.size() >= k) {
list.remove(0);
}
list.add(str);
}
}
for (int i = list.size() - 1; i >= 0; i--) {
bw.write(list.get(i) + "\n");
}
bw.flush();
}
}
변수)
k : 목록 용량
n : 문서 개수
list : 목록
str : 문서 이름
목록 용량과 문서 개수를 입력받는다. 문서 개수만큼 문서 이름을 입력받으며 다음 과정을 거친다.
1) ArrayList에 문서가 이미 있다면 제거 후 추가
2) ArrayList에 문서가 없고 목록 용량 초과라면 제일 처음 들어온 문서 제거 후 추가, 목록 용량 초과가 아니라면 그냥 추가
최종 ArrayList에 있는 값을 뒤에서부터 출력한다.
'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
[Baekjoon] 9787_Olympic Games Ranking (4) | 2025.07.29 |
---|---|
[Baekjoon] 9491_Politics (2) | 2025.07.28 |
[Baekjoon] 10442_Rank Order (1) | 2025.07.24 |
[Baekjoon] 15426_GlitchBot (3) | 2025.07.23 |
[Baekjoon] 30949_Equal Schedules (2) | 2025.07.22 |