🌞Algorithm/🔥Baekjoon

[Baekjoon] 6973_Dynamic Dictionary Coding

뿌야._. 2025. 1. 21. 16:18
문제(출처: https://www.acmicpc.net/problem/6973)

< Dynamic Dictionary Coding >

 

문제 풀이 

 

HashMap을 활용하여 HashMap에 없는 값이라면 추가를, 있다면 value를 출력한다.

 

 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 _6973_ { // Dynamic Dictionary Coding

	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());
        
		String str = "";
		HashMap<String, Integer> map = new HashMap<>();
		int idx = 1;
		boolean flag=false;
        
		while (n > 0) {
			str = bf.readLine();
            
			if (str == null || str.equals("")) {
				n -= 1;
				map.clear();
				idx = 1;
				if (n == 0) {
					break;
				} else {
					bw.write("\n");
				}
			} else if(flag){
				bw.write("\n");
			}
            
			st = new StringTokenizer(str);
			while (st.hasMoreTokens()) {
				String word = st.nextToken();
				if (map.containsKey(word)) {
					bw.write(map.get(word) + " ");
				} else {
					bw.write(word + " ");
					map.put(word, idx++);
				}
			}
			flag=true;
		}
		bw.flush();
	}
}
변수)
n : 세트 수
str : 입력 값
map : HashMap <word, 번호>
idx : 번호
flag : 줄 바꿈 여부

 

세트 수를 입력받는다. 세트 수가 0보다 클 때 다음 과정을 반복한다.

 

1) 문장이 비었거나 입력이 끝이라면 n-1, HashMap과 idx를 초기화한다. n이 0이라면 종료하며 0이 아니라면 줄 바꿈 한다.

2) 줄 바꿈 여부가 true라면 줄 바꿈 한다.

3) 문장을 단어로 끊어 읽으며 HashMap에 키 값으로 존재한다면 value를 출력하고, 키 값이 존재하지 않는다면 HashMap에 추가하고 원래 단어를 출력한다.



 

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글

[Baekjoon] 29934_Important Messages  (1) 2025.01.20
[Baekjoon] 9951_Word Extraction  (1) 2025.01.17
[Baekjoon] 11518_Morse  (0) 2025.01.16
[Baekjoon] 4775_Spelling Be  (1) 2025.01.15
[Baekjoon] 18294_Biodiversity  (0) 2025.01.14