🌞Algorithm/🔥Baekjoon

[Baekjoon] 15198_NKD

뿌야._. 2025. 7. 25. 09:48
문제(출처: 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