문제 풀이 및 개발 공간

[백준] 4422번 Crypt Kicker 2 (gold 4 본문

백준공부/java

[백준] 4422번 Crypt Kicker 2 (gold 4

gomduri43 2023. 9. 22. 16:36

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        boolean find=false;
        ArrayList<String> arr=new ArrayList<>();
        HashMap<Integer,String> dict=new HashMap<>();
        String[] q={"the", "quick", "brown" ,"fox", "jumps", "over" ,"the", "lazy", "dog"};
        int l=43;
        String input;
        while((input=br.readLine())!=null && input.length()!=0){
            if(find==false){
                String[] temp=input.split(" ");
                if (input.length() != l || q.length!=temp.length) {
                    arr.add(input);
                }
                else {
                    arr.add(input);
                    boolean escape=true;
                    int j=0;
                    for(j=0; j<q.length; j++){
                        if (q[j].length() != temp[j].length()) {
                            break;
                        }
                        for(int k=0; k<q[j].length(); k++){
                            int in=temp[j].charAt(k)-'a';
                            if(dict.get(in)==null) {
                                dict.put(in, String.valueOf(q[j].charAt(k)));
                            }
                            else if(dict.get(in).charAt(0)==q[j].charAt(k)){
                                continue;
                            }
                            else{
                                escape=false;
                                break;
                            }
                        }
                        if(!escape){
                            dict.clear();
                            break;
                        }
                    }
                    if(j==q.length){
                        find=true;
                    }
                }
            }
            else{
                arr.add(input);
            }
        }
        if(dict.isEmpty()){
            bw.write("No solution.");
        }
        else {
            for (String s : arr) {
                String temp=s;
                for(int j=0; j<temp.length(); j++){
                    int index=temp.charAt(j)-'a';
                    if(index>=0 && index<26){
                        bw.write(dict.get(index));
                    }
                    else{
                        bw.write(" ");
                    }
                }
                bw.write("\n");
            }
        }
        bw.flush();
    }
}