[Baekjoon] 9512_Languages
๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/9512)
< Languages >
๋ฌธ์ ํ์ด
HashMap์ ์ฌ์ฉํ์ฌ ๊ฐ ๋จ์ด๊ฐ ์ด๋ ์ธ์ด์ธ์ง ๊ตฌ๋ถํ๋ค.
* ์ํ ํ ์คํธ์์ '๊ณผ -๋ฅผ ์ ์ธํ ๊ฒ์ ๊ตฌ๋ถ ๊ธฐํธ๋ก ์ญํ ํ๋ค๋ ๊ฒ์ ์ฃผ์ํ๋ค.
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.StringTokenizer;
public class _9512_ { // Languages
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;
int N = Integer.parseInt(bf.readLine());
HashMap<String, String> map = new HashMap<>();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(bf.readLine());
String language = st.nextToken();
while (st.hasMoreTokens()) {
map.put(st.nextToken().toLowerCase(), language);
}
}
String str = "";
while ((str = bf.readLine()) != null) {
st = new StringTokenizer(str);
boolean flag = false;
while (st.hasMoreTokens()) {
String word = st.nextToken().toLowerCase();
int start = 0, end = 0;
while (start < word.length() && end < word.length()) {
if (Character.isAlphabetic(word.charAt(end)) || word.charAt(end) == '\''
|| word.charAt(end) == '-') {
end++;
} else {
String temp = word.substring(start, end);
start = end + 1;
end = start;
if (map.containsKey(temp)) {
bw.write(map.get(temp) + "\n");
flag = true;
break;
}
}
}
if (!flag) {
String temp = word.substring(start, end);
if (map.containsKey(temp)) {
bw.write(map.get(temp) + "\n");
break;
}
}
}
}
bw.flush();
}
}
๋ณ์)
N : ์ธ์ด์ ์
map : HashMap <String, String>
language : ์ธ์ด ์ด๋ฆ
str : ์ํ ํ ์คํธ
flag : ์ธ์ด ์ถ๋ ฅ ์ฌ๋ถ
word : ์ํ ํ ์คํธ -> ๋จ์ด
start, end : ๋จ์ด ๋๋๋ ๊ตฌ๊ฐ
temp : ๋๋ ๋จ์ด
์ธ์ด์ ์๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ์ธ์ด์ ์๋งํผ ์ธ์ด์ ์ด๋ฆ๊ณผ ํด๋น ์ธ์ด์ ๋จ์ด๋ฅผ ์ ๋ ฅ๋ฐ์ HashMap์ key ๊ฐ์ผ๋ก ๋จ์ด๋ฅผ, value๋ก ์ธ์ด ์ด๋ฆ์ ์ ์ฅํ๋ค. ์ํ ํ ์คํธ๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉฐ ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1) ๊ฐ ๋จ์ด๋ฅผ ์ดํด๋ณด๋ฉฐ '๊ณผ -, ์ํ๋ฒณ์ ์ ์ธํ ๋ฌธ์๊ฐ ์๋ค๋ฉด ๊ตฌ๋ถ์์ด๋ฏ๋ก ๋จ์ด๋ฅผ ์๋ฅธ๋ค. ๊ทธ ๋จ์ด๊ฐ HashMap์ ์๋์ง ํ์ธํ์ฌ ์กด์ฌํ๋ค๋ฉด ์ธ์ด ์ด๋ฆ์ ์ถ๋ ฅํ๊ณ ์ข ๋ฃํ๋ค.
์ธ์ด ์ด๋ฆ์ ์ถ๋ ฅํ์ง ์์ ์ํ๋ผ๋ฉด ๊ทธ ๋จ์ด๊ฐ HashMap์ ์กด์ฌํ๋์ง ํ์ธํ์ฌ ์ธ์ด ์ด๋ฆ์ ์ถ๋ ฅํ๋ค.
