본문 바로가기
Baekjoon 자바 코드/문자열

[백준] 5622번 다이얼 풀이 코드 (Java 자바)

by 망댕이 2024. 4. 17.
반응형

 

이 문제는 각각 알파벳마다 번호가 지정되어 있기 때문에 입력된 알파벳마다 숫자를 부여해줘야 합니다.

 

정답 코드 1)

반응형
import java.util.Scanner;

class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        String str = sc.next();        
        int sum = 0;
        
        for(int i = 0; i < str.length(); i++){
            char ch = str.charAt(i);
            int num = (int)ch;
            if(num >= 'A' && num <= 'C'){
                sum = sum+3;
            }else if(num >= 'D' && num <= 'F'){
                sum = sum+4;
            }else if(num >= 'G' && num <= 'I'){
                sum = sum+5;
            }else if(num >= 'J' && num <= 'L'){
                sum = sum+6;
            }else if(num >= 'M' && num <= 'O'){
                sum = sum+7;
            }else if(num >= 'P' && num <= 'S'){
                sum = sum+8;
            }else if(num >= 'T' && num <= 'V'){
                sum = sum+9;
            }else if(num >= 'W' && num <= 'Z'){
                sum = sum+10;
            }
        }
        System.out.print(sum);
    }
}

 

첫 번째는 아스키코드를 이용하여 num이 'A' ~ 'C' 아스키코드 값 사이일 때 3, 'D' ~ 'F' 아스키 코드 값 사이일 때 4..로 잡으면 문제를 풀 수 있겠다는 생각이 들었다.

이런 방법을 기반으로 if ~ else 문을 사용하여 알파벳 범위 안에 들어왔을 때 해당 숫자+1을 부여하도록 설정하였다.

 

 

정답 코드 2)

import java.util.Scanner;

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

 

2번째 방법으로는 switch ~ case문을 사용해서 문제를 해결할 수 있다.

str.charAt(i) 값이 case와 같을 때 그에 해당하는 실행문을 실행하여, 입력값 맞게 출력값이 출력할 수 있다.

반응형