🌞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) "******" 출력