문제링크
풀이방법
( 순서를 유지하면서 중복은 허용하지 않는 자료구조가 필요해 !)
- LinkedHashSet을 활용한다.
소스코드 작성 방법
- 학생을 입력받으면서 set에 이미 포함되어있으면 set에 해당 문자열을 제거한다.
- set에는 항상 입력받은 학생을 추가한다.
- set을 배열로 변환한다.
- 만약, 배열의 크기가 k(수강 가능 인원)보다 작으면 k를 배열의 크기로 변경한다.
- k만큼 출력한다.
소스코드
package baekjoon.array_map_using_hash;
import java.io.*;
import java.util.*;
public class Q_13414_RegisterForCourses {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int k = Integer.parseInt(st.nextToken());
int l = Integer.parseInt(st.nextToken());
LinkedHashSet<String> set = new LinkedHashSet<>();
for (int i = 0; i < l; i++) {
String student = br.readLine();
if(set.contains(student)){
set.remove(student);
}
set.add(student);
}
Object[] key = set.toArray();
if(key.length < k){
k = key.length;
}
for (int i = 0; i < k; i++) {
bw.write(key[i]+"\n");
}
br.close();
bw.close();
}
}
반응형
'자료구조&알고리즘 > 해시를 사용한 집합과 맵' 카테고리의 다른 글
[백준] 해시를 사용한 집합과 맵 - 2910번 빈도 정렬 (Java) (0) | 2022.06.29 |
---|---|
[백준] 해시를 사용한 집합과 맵 - 7785번 회사에 있는 사람 (Java) (0) | 2022.06.17 |
해시맵 (0) | 2022.06.17 |
댓글