λ¬Έμ
νμ΄
λ¨Όμ μ΄ λ¬Έμ λ, μκ° μ μ²μ ν νμλ€μ μμλλ‘ μλ£κ΅¬μ‘°μ λ£μ΄μΌ νλλ°,
μ΄λ―Έ κ·Έ μλ£κ΅¬μ‘°μ λ€μ΄κ° μλ νμμΈ κ²½μ°, μ μΌ λ· μμλ‘ λ€μ μ§μ΄λ£μ΄μΌ νλ€.
μ΄ μμ΄λμ΄λ, μ΄ λ¬Έμ λ₯Ό νΈλ λꡬλ λ μ¬λ Έμν λ°
μκ°λ³΄λ€ κ°λ¨νκ² ν릴 μ€ μμλλ° μλμλ€.
1οΈβ£ mapκ³Ό priority queue μ¬μ©
setμ μ΄μ©ν΄μ μ€λ³΅μ¬λΆλ₯Ό νμΈν μ μμ§λ§, μκ° μ μ² μμλ₯Ό νμΈν μ μλ€.
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < L; i++) {
String id = br.readLine();
if (map.containsKey(id)) {
map.remove(id);
map.put(id, i);
} else {
map.put(id, i);
}
}
λ°λΌμ, mapμ μ΄μ©ν΄μ μκ° μ μ² μμ μ 보κΉμ§ ν¨κ» λ£μ μ μλ€.
κ·Έλ κ², mapμ μ΄λ―Έ μκ° μ μ² μ΄λ ₯μ΄ μλ νμμ κ²½μ° μμ νκ³ λ€μ μ λ ₯ν΄μ£Όλ©΄ λλ€.
mapμ μμ μ 보λ₯Ό λ£μμ§λ§, μ λ ¬μ λ°λ‘ λΆκ°λ₯ νλ―λ‘
mapμ μ λ ₯λ μμμ λ°λΌ μ λ ¬νκΈ° μν΄, mapμ μλ μμλ€μ μμ°¨μ μΌλ‘ μ°μ μμ νμ λ£μλ€.
λ¨, μ°μ μμ νμ μ§μ΄λ£μ λ μλ‘μ΄ ν΄λμ€λ₯Ό μ μν΄μ μ λ ¬ 쑰건과 ν¨κ» ꡬννλ©΄ λλ€.
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int K = Integer.parseInt(input[0]), L = Integer.parseInt(input[1]);
HashMap<String, Integer> map = new HashMap<>();
for (int i = 0; i < L; i++) {
String id = br.readLine();
if (map.containsKey(id)) {
map.remove(id);
map.put(id, i);
} else {
map.put(id, i);
}
}
PriorityQueue<Student> pq = new PriorityQueue<>((a, b) -> a.idx - b.idx);
for (String s : map.keySet()) {
pq.offer(new Student(s, map.get(s)));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < K; i++) {
if (!pq.isEmpty()) {
sb.append(pq.poll().id + "\n");
}
}
System.out.println(sb);
}
static class Student {
String id;
int idx;
public Student(String id, int idx) {
this.id = id;
this.idx = idx;
}
}
}
κ²°κ³Ό
2οΈβ£ LinkedHashSet μ¬μ©
μ΄ λ¬Έμ λ₯Ό λ μ½κ² ν μ μλ λ°©λ²μ΄ μλ μ°Ύμ보λ€κ° μ²μ μκ²λ μλ£κ΅¬μ‘°μ΄λ€.
setμΈλ°, μμλ₯Ό 보μ₯ν΄μ£Όλ setμ΄λΌκ³ νλ€.
λ°λΌμ, μ΄ μλ£κ΅¬μ‘°λ₯Ό μκ³ μμλ€λ©΄ μ ~~λ§λ‘ μ½κ² μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ€.
import java.io.*;
import java.util.*;
public class Main2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] input = br.readLine().split(" ");
int K = Integer.parseInt(input[0]), L = Integer.parseInt(input[1]);
LinkedHashSet<String> set = new LinkedHashSet<>();
for (int i = 0; i < L; i++) {
String id = br.readLine();
if (set.contains(id)) {
set.remove(id);
set.add(id);
} else {
set.add(id);
}
}
StringBuilder sb = new StringBuilder();
for (String id : set) {
sb.append(id + "\n");
if (--K == 0) {
break;
}
}
System.out.println(sb);
}
}
κ²°κ³Ό
1λ² λ°©λ² λ³΄λ€ λ°λ₯Έ μκ°μΌλ‘ ν΅κ³Όνμλ€.