[백준,BOJ 5622] 다이얼(JAVA 구현)
코테/백준 온라인 저지(BOJ)

[백준,BOJ 5622] 다이얼(JAVA 구현)

반응형

-해법

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        
        char num[][] = {{' ',' ',' '},{' ',' ',' '},{'A','B','C'},{'D','E','F'}
        				,{'G','H','I'},{'J','K','L'},{'M','N','O'}
        				,{'P','Q','R','S'},{'T','U','V'},{'W','X','Y','Z'}       			
        				}; // 다이얼에 맞는 알파벳 저장 2차원 배열
                        
        String alph = in.next(); // 알파벳 입력
        int time = 0; // 걸리는 시간
        
        for(int i=2;i<num.length;i++) { // 2~9까지 알파벳이 존재하므로
        	for(int j=0;j<num[i].length;j++) { // 해당 행에 마지막까지 탐색
        		for(int k=0;k<alph.length();k++) { // 입력받은 알파벳 탐색
        			if(alph.charAt(k) == num[i][j]) { // 입력받은 알파벳 한 개와 배열의 값이 일치하는 경우
        				time+= (i+1); // 다이얼 번호마다 +1초씩 걸리므로 +1한 후 시간에 누적
        			}
        		}
        	}
        }
        
        System.out.println(time); // 시간 출력
        
        in.close();
        
    }
}

  이전에도 이 문제를 풀어봐서 풀이를 확인해보니 무수한 조건문의 향연이었더라.. ㅋㅋㅋㅋ 좀 더 깔끔하게 풀어보기 위해서 문제에서 제공하는 정보를 토대로 2차원 배열에 저장한 뒤, 탐색을 통해 시간 연산을 진행하였더니 더 깔끔해졌다.

 


  참고로 아래는 이전에 풀었던 풀이이다... ㅋㅋㅋ

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        String word = sc.next();
        String c_word = "";
        int time =0;
        
            for(int j = 0;j<word.length();j++){
                if('A'<= word.charAt(j)&& word.charAt(j)<='C'){
                    c_word = c_word+ String.valueOf(2);
                }else if('D'<= word.charAt(j)&& word.charAt(j)<='F'){
                    c_word = c_word+ String.valueOf(3);
                }else if('G'<= word.charAt(j)&& word.charAt(j)<='I'){
                    c_word = c_word+ String.valueOf(4);
                }else if('J'<= word.charAt(j)&& word.charAt(j)<='L'){
                    c_word = c_word+ String.valueOf(5);
                }else if('M'<= word.charAt(j)&& word.charAt(j)<='O'){
                    c_word = c_word+ String.valueOf(6);
                }else if('P'<= word.charAt(j)&& word.charAt(j)<='S'){
                    c_word = c_word+ String.valueOf(7);
                }else if('T'<= word.charAt(j)&& word.charAt(j)<='V'){
                    c_word = c_word+ String.valueOf(8);
                }else if('W'<= word.charAt(j)&& word.charAt(j)<='Z'){
                    c_word = c_word+ String.valueOf(9);
                }
            }
        
        
        for(int i=0;i<c_word.length();i++) {
        	if(c_word.charAt(i) =='0') {
        		time += 11;
        	}else if(c_word.charAt(i) =='1') {
        		time += 2;
        	}else if(c_word.charAt(i) =='2') {
        		time += 3;
        	}else if(c_word.charAt(i) =='3') {
        		time += 4;
        	}else if(c_word.charAt(i) =='4') {
        		time += 5;
        	}else if(c_word.charAt(i) =='5') {
        		time += 6;
        	}else if(c_word.charAt(i) =='6') {
        		time += 7;
        	}else if(c_word.charAt(i) =='7') {
        		time += 8;
        	}else if(c_word.charAt(i) =='8') {
        		time += 9;
        	}else if(c_word.charAt(i) =='9') {
        		time += 10;
        	}
        }
        System.out.println(time);
        
    }
}

  굉장히 지저분하다.

반응형