๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 9512_Languages

๋ฟŒ์•ผ._. 2025. 6. 18. 12:45
๋ฌธ์ œ(์ถœ์ฒ˜: 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์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์–ธ์–ด ์ด๋ฆ„์„ ์ถœ๋ ฅํ•œ๋‹ค.



 

'๐ŸŒžAlgorithm > ๐Ÿ”ฅBaekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Baekjoon] 19605_Cyclic Shifts  (1) 2025.06.24
[Baekjoon] 9843_LVM  (2) 2025.06.20
[Baekjoon] 16692_Greedy Scheduler  (1) 2025.06.17
[Baekjoon] 6187_Going to the Movies  (1) 2025.06.16
[Baekjoon] 16524_Database of Clients  (1) 2025.06.13