BOJ#13414 수강신청
* 문제
https://www.acmicpc.net/problem/13414
* 풀이
시간초과에 유의하여 풀어야 합니다.
1. 자료구조 선택
입력되는 값의 순서를 유지해야 한다. → Linked
중간 중간 중복되는 값을 검사해야 하므로 검색이 빨라야 한다. 규모가 커질 수록 검색에 유리한 → Hash
따라서 LinkedHashSet을 이용한다.
2. 입출력 시간 최소화
입력 : Scanner 대신 BufferedReader를 이용
출력 : System.out.println 대신 BufferedWriter를 이용하자. 또는 Stringbuilder에 내용을 담았다가 System.out.println에 한번에 출력
3. Collections에 접근할 때는 Iterator를 이용하며,
Iterator의 next()함수 이용 시 항상 hasNext() 함수를 먼저 조건을 걸어 검사하자.
- 알고리즘 :
1. 학번을 차례로 입력받아 LinkedHashSet에 add한다.
2. 중복된 값이 입력될 경우 LinkedHashSet에 그 값을 삭제하고, 새로 add한다.
3. K만큼 LinkedHashSet에서 값을 출력한다.
* 나의 코드
https://github.com/stack07142/BOJ/tree/master/BOJ%2313414_CourseRegistration
'Algorithm > 자료구조' 카테고리의 다른 글
BOJ#1927 최소 힙 (0) | 2017.07.20 |
---|---|
BOJ#11656 접미사 배열 (0) | 2016.11.18 |
BOJ#1406 에디터 (0) | 2016.11.15 |
BOJ#10799 쇠막대기 (0) | 2016.11.14 |