🌞Algorithm/🔥Baekjoon

[Baekjoon] 4675_Word Amalgamation

뿌야._. 2025. 2. 10. 15:39
문제(출처: https://www.acmicpc.net/problem/4675)

< Word Amalgamation >

 

문제 풀이 

 

단어를 알파벳순으로 정렬하여 HashMap <정렬된 단어, ArrayList <단어>>를 저장한다.

if) tarp이라면 HashMap에 key 값으로 aprt를 저장하고 value로 ArrayList <tarp>를 저장한다.

 

 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.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;

public class _4675_ { // Word Amalgamation
	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
		int num = 2;
		HashMap<String, ArrayList<String>> map = new HashMap<>();
        
		while (num > 0) {
			String str = bf.readLine();
            
			if (str.equals("XXXXXX")) {
				num -= 1;
			} else {
				char[] arr = str.toCharArray();
				Arrays.sort(arr);
				String result = new String(arr);
                
				if (num == 2) {
					if (map.containsKey(result)) {
						map.get(result).add(str);
					} else {
						ArrayList<String> temp = new ArrayList<>();
						temp.add(str);
						map.put(result, temp);
					}
				} else {
					if (map.containsKey(result)) {
						ArrayList<String> temp = map.get(result);
						Collections.sort(temp);
						for (String x : temp) {
							bw.write(x + "\n");
						}
					} else {
						bw.write("NOT A VALID WORD\n");
					}
					bw.write("******\n");
				}
			}
		}
		bw.flush();
	}
}

 

변수)
num : 종료 조건
map : HashMap <String, ArrayList <String>>
str : 입력
arr : 입력받은 단어 -> 배열
result : 단어를 알파벳순으로 정렬한 결과

 

num이 0보다 클 때 다음 과정을 반복한다.

 

1) 문자열이 "XXXXXX"라면 num-1

2) 문자열이 "XXXXXX" 아니라면 문자열을 char 배열로 전환하여 정렬한 후 문자열로 바꾼다. 

3) num이 2이고 key값이 있다면 value에 단어 추가, key값이 없다면 map에 key값과 ArrayList 추가

4) num이 1이라면 HashMap에서 key값을 찾아 존재한다면 value를 출력하고 key값이 없다면 "NOT A VALID WORD"를 출력한다.

5) "******" 출력



 

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

[Baekjoon] 4408_Election  (0) 2025.02.12
[Baekjoon] 4368_Babelfish  (0) 2025.02.11
[Baekjoon] 18706_Coffee  (0) 2025.02.07
[Baekjoon] 14455_Don't Be Last!  (1) 2025.02.06
[Baekjoon] 4351_Hay Points  (1) 2025.02.05