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

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

by 망댕이 2024. 9. 25.
반응형

다이얼을 걸기 위한 최소 시간을 구하는 문제이다.

접근 방법)

각 대문자 알파벳에 해당하는 다이얼 번호가 있다. 조건문을 이용하여 알파벳을 입력받았을 때 그에 해당하는 다이얼 번호를 할당하고, 할당받은 다이얼 번호의 총합을 구하면 된다.먼저 입력값을 받은 후 알파벳을 하나씩 처리하기 위해 입력 값 길이 만큼 반복하는 for문과 charAt()을 이용하여 알파벳을 하나씩 뽑아낼 수 있다. 그 후 조건문을 생성하여 다이얼 번호 구한다.

 

▷ 알파벳 하나씩 조건문 넣기

String str = "ABA";        
int sum = 0; // 총 합 구하기(출력할 값)
        
for(int i = 0; i < str.length(); i++){
    char ch = str.charAt(i); // 문자 하나씩 뽑기
    if((int)ch >= 'A' && (int)ch <= 'C'){ // A~C 알파벳 다이얼 번호는 3
        sum = sum+3;
    }else if((int)ch >= 'D' && (int)ch <= 'F'){ // D~F 알파벳 다이얼 번호는 4
        sum = sum+4;
    }
}

 

정답 코드 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);
            if((int)ch >= 'A' && (int)ch <= 'C'){
                sum = sum+3;
            }else if((int)ch >= 'D' && (int)ch <= 'F'){
                sum = sum+4;
            }else if((int)ch >= 'G' && (int)ch <= 'I'){
                sum = sum+5;
            }else if((int)ch >= 'J' && (int)ch <= 'L'){
                sum = sum+6;
            }else if((int)ch >= 'M' && (int)ch <= 'O'){
                sum = sum+7;
            }else if((int)ch >= 'P' && (int)ch <= 'S'){
                sum = sum+8;
            }else if((int)ch >= 'T' && (int)ch <= 'V'){
                sum = sum+9;
            }else if((int)ch >= 'W' && (int)ch <= 'Z'){
                sum = sum+10;
            }
        }
        System.out.print(sum);
    }
}

 

if문을 사용하여 대문자 알파벳의 아스키 코드 값을 이용하여 조건문을 만들고, 조건에 해당하는 다이얼 번호를 누적해서 더한 후 출력하는 방식을 사용하였다.

 

정답 코드 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);
    }
}

 

switch-case문을 사용하여 각각 알파벳에 해당하는 케이스 별로 다이얼 번호 값을 누적하여 더하는 방식으로 결과 값을 출력했다.

반응형