gone

#[백준] 5622 다이얼 본문

알고리즘

#[백준] 5622 다이얼

예쁨받는 돌맹이 2024. 1. 15. 11:31

 

제출 1) 에러

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] str = br.readLine().split("");

        int time = 0;
        int num = 0;
        for(int i=0; i<str.length; i++) {
            num = (str[i].charAt(0) - 'A') / 3 + 2; // 영어가 해당하는 수
            time += num + 1;
        }

        System.out.println(time);
    }

}

 

당연히 이게 정답인줄 알았지남 코드를 다시 살펴보니 7 => PQRS, 9 => WXYZ 일때가 4개씩 들어가는 예외가 발생한다.

따라서 나누기 3은 옳바르지 못한 코드로직이다 따라서 아래와 같이 Switch 문 으로 예외처리를 하면서 처리하는게 가장 정확한 방법인것같다. 앞으로 예외처리를 좀더 꼼꼼히 살펴봐야되겠다.


제출2) Switch-case 문

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
	public static void main(String[] args) throws IOException {
    
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String s = br.readLine();
        
		int count=0;
		int k = s.length();
        
		for(int i = 0 ; i < k ; i++) {
        
			switch(s.charAt(i)) {
			case 'A' : case 'B': case 'C' : 
				count += 3; 
				break;
                
			case 'D' : case 'E': case 'F' : 
				count += 4; 
				break;
                
			case 'G' : case 'H': case 'I' : 
				count += 5; 
				break;
                
			case 'J' : case 'K': case 'L' : 
				count += 6; 
				break;
                
			case 'M' : case 'N': case 'O' : 
				count += 7; 
				break;
                
			case 'P' : case 'Q': case 'R' : case 'S' :
				count += 8; 
				break;
                
			case 'T' : case 'U': case 'V' : 
				count += 9; 
				break;
                
			case 'W' : case 'X': case 'Y' : case 'Z' : 
				count += 10; 
				break;
			}
		}		
		System.out.print(count);
	}
}