백준 - 13414 - 수강신청

2021. 3. 30. 14:04카테고리 없음

www.acmicpc.net/problem/13414

 

13414번: 수강신청

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

www.acmicpc.net

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;
 
public class 수강신청 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] inputs = sc.nextLine().split(" ");
        int K = Integer.parseInt(inputs[0]); // 수강 가능 인원수
        int L = Integer.parseInt(inputs[1]); // 수강 신청 대기 인원수
        Set<String> set = new LinkedHashSet<>();
 
        for(int i=0; i<L; i++) {
            String seq = sc.nextLine();
            if(set.contains(seq)) {
                set.remove(seq);
            }
            set.add(seq);
        }
 
        StringBuilder sb = new StringBuilder();
        int index = 0;
        for(String seq : set) {
            if(index >= K) {
                break;
            }
            sb.append(seq+"\n");
            index++;
        }
        System.out.println(sb);
    }
}
 
cs

알고리즘

  • 해싱
  • 자바 컬렉션의 LinkedHashSet을 이용하면 Set을 이용할때 순서를 보장해주기 때문에 따로 리스트가 필요없이 구현 가능하다.