BOJ 13414 번을 해결하는 중 Hash의 순서 고려를 어떻게 해야 하나 찾아보다가 LinkedHashSet이라는 함수가 있어 손쉽게 해결 할 수 있다는 것을 알게되어 작성하였습니다.
HashSet과 동일한 구조를 가지지만 HashSet은 순서를 관리하지 않아 값을 출력할 때마다 다른 순서대로 출력이 됩니다
하지만 LinkedHashSet은 삽입된 순서대로 반복합니다
HashSet과 동일한 특징들이 있는데 마찬가지로 중복 값을 허용하지 않습니다
기본적인 메서드 들은 set과 동일하기 때문에 순서를 고려한 set이 필요할 때 사용하면 좋을 것 같습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
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);
}
int count = 0;
for(String next : set){
count++;
System.out.println(next);
if(count == K) break;
}
}
}