ALGORITHM

[JAVA] 백준 13414번- 수강신청

연듀 2022. 7. 7. 12:48

https://www.acmicpc.net/problem/13414

 

13414번: 수강신청

입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목

www.acmicpc.net

 

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int k = sc.nextInt();
        int l = sc.nextInt();
        int count = 0;

        LinkedHashSet<String> set = new LinkedHashSet<>();

        for(int i=0; i<l; i++){
            String str = sc.next();

            if(set.contains(str)) set.remove(str);
            set.add(str);
        }
        for(String x : set){
            count++;
            System.out.println(x);
            if(count == k) break;
        }
    }
}

 

그냥 map이나 set을 사용해 풀려고 하였으나 map이나 set은 추가한 순서대로 값들이 저장되지 않으므로 어려웠다.

그래서 순서대로 저장되는 LinkedHashSet을 이용해 풀었다.

입력받은걸 저장할 때 기존에 있는 값이라면 지워주고 맨 뒤에다가 추가하면 된다.