[Baekjoon] 15323_ZigZag
λ¬Έμ (μΆμ²: https://www.acmicpc.net/problem/15323)
< ZigZag >
λ¬Έμ νμ΄
κ° μνλ²³μ ν΄λΉνλ μ°μ μμ νλ₯Ό λ§λ€μ΄ ꡬλΆνμ¬ μ μ₯νλ€. κ° μνλ²³μΌλ‘ μμνλ λ¨μ΄λ€ μ€μμ μνλ²³ μμμ μ ν νμλ₯Ό νλ³νμ¬ μ ννλ€.
+ κ° λ¨μ΄μ μμνλ μνλ²³μ ꡬλΆνμ¬ λ°λ‘ μ μ₯νμ§ μκ³ ν λ²μ μ μ₯ν κ²½μ° μκ°μ΄κ³Όκ° λ°μνλ€.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class _15323_ { // ZigZag
static class Word implements Comparable<Word> {
private String w;
private int count;
public Word(String w, int count) {
this.w = w;
this.count = count;
}
@Override
public int compareTo(Word o) {
if (this.count == o.count) {
return this.w.compareTo(o.w);
}
return this.count - o.count;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(bf.readLine());
int k = Integer.parseInt(st.nextToken());
int n = Integer.parseInt(st.nextToken());
HashMap<Character, PriorityQueue<Word>> map = new HashMap<>();
for (int i = 0; i < 26; i++) {
map.put((char) ('a' + i), new PriorityQueue<>());
}
for (int i = 0; i < k; i++) {
String str = bf.readLine();
map.get(str.charAt(0)).add(new Word(str, 0));
}
for (int i = 0; i < n; i++) {
char x = bf.readLine().charAt(0);
Word word = map.get(x).poll();
bw.write(word.w + "\n");
word.count += 1;
map.get(x).add(word);
}
bw.flush();
}
}
λ³μ)
k, n : λ¨μ΄, λ¬Έμ κ°μ
map : HashMap <Character, PriorityQueue <Word>>
x : λ¬Έμ
Word
λ¨μ΄μ μ ν νμλ₯Ό λ³μλ‘ κ°μ§λ©° μ ν νμκ° μμμλ‘, μ ν νμκ° κ°λ€λ©΄ μνλ²³μμΌλ‘ μ°μ μμλ₯Ό κ°μ§λ€.
Main
λ¨μ΄μ λ¬Έμ κ°μλ₯Ό μ λ ₯λ°λλ€. κ° μνλ²³μ λ°λΌ ꡬλΆνμ¬ μ μ₯νκΈ° μν΄ HashMapμ μνλ²³μ key κ°μΌλ‘, PriorityQueueλ₯Ό valueλ‘ μ μ₯νμ¬ μ΄κΈ°ννλ€. λ¨μ΄ μλ§νΌ λ¨μ΄λ₯Ό μ λ ₯λ°μ μμνλ μνλ²³μ΄ ν΄λΉνλ κ³³μ μ μ₯νλ€. λ¬Έμ κ°μλ§νΌ λ¬Έμλ₯Ό μ λ ₯λ°μ mapμμ keyκ°μΌλ‘ λ¬Έμλ₯Ό κ°μ§λ μ°μ μμ νλ₯Ό μ°Ύμ 첫 λ²μ§Έ κ°μ μΆλ ₯νλ€. κ·Έ ν μ ν νμλ₯Ό μ¦κ°μμΌ λ€μ μ°μ μμ νμ μ μ₯νλ€.