Algorithm/자료구조

BOJ#13414 수강신청

밤이2209 2016. 12. 1. 15:52

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