https://www.acmicpc.net/problem/13414
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k = sc.nextInt();
int l = sc.nextInt();
int count = 0;
LinkedHashSet<String> set = new LinkedHashSet<>();
for(int i=0; i<l; i++){
String str = sc.next();
if(set.contains(str)) set.remove(str);
set.add(str);
}
for(String x : set){
count++;
System.out.println(x);
if(count == k) break;
}
}
}
그냥 map이나 set을 사용해 풀려고 하였으나 map이나 set은 추가한 순서대로 값들이 저장되지 않으므로 어려웠다.
그래서 순서대로 저장되는 LinkedHashSet을 이용해 풀었다.
입력받은걸 저장할 때 기존에 있는 값이라면 지워주고 맨 뒤에다가 추가하면 된다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : Stack- 괄호문자제거 (0) | 2022.07.11 |
---|---|
[JAVA] 알고리즘 : Stack- 올바른 괄호 (0) | 2022.07.11 |
[JAVA] 백준 16499번- 동일한 단어 그룹화하기 (0) | 2022.07.06 |
[JAVA] 백준 10546번- 배부른 마라토너 (0) | 2022.07.06 |
[JAVA] 백준 1822번- 차집합 (0) | 2022.07.06 |