본문 바로가기

[백준 5622] 문자열 '다이얼' - 자바 (java)

'다이얼' - 자바 (java)

 

<문제풀러 가기>

 

5622번: 다이얼

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

www.acmicpc.net


문제

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하는 프로그램을 작성하시오.

풀이방법

다이얼 입력값 (대문자)
	ASCII 코드로 비교하기 쉽게
	String -> char[] 배열로 나눠 저장

foreach문 (반복문) 실행
	Iterator 처럼 배열 내 값들을 하나씩 처리
    for (char c : 배열)
    

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

출력

첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.

예제 입력 1

UNUCIC

예제 출력 1

36

 풀이 코드

 import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();

		// 문자열을 char형 배열로 반환
        char[] chars = str.toCharArray();
		
        // 총 걸리는 시간을 저장할 int형 변수
        int sum = 0;
        // foreach 반복문, char[] 배열 안에 값들을 하나씩 char형으로 처리
        for (char c : chars) {
		// 알파벳이 ABC 중 하나라면 + 3초
            if (c >= 'A' && c <= 'C') {
                sum += 3;
		// 알파벳이 DEF 중 하나라면 + 4초
            } else if (c >= 'D' && c <= 'F'){
                sum +=4;
		// 알파벳이 GHI 중 하나라면 + 5초
            } else if (c >= 'G' && c <= 'I'){
                sum +=5;
		// 알파벳이 JKL 중 하나라면 + 6초
			}else if (c >= 'J' && c <= 'L'){
                sum +=6;
		// 알파벳이 MNO 중 하나라면 + 7초
            }else if (c >= 'M' && c <= 'O'){
                sum +=7;
		// 알파벳이 PQRS 중 하나라면 + 8초
            }else if (c >= 'P' && c <= 'S'){
                sum +=8;
		// 알파벳이 TUV 중 하나라면 + 9초
            }else if (c >= 'T' && c <= 'V'){
                sum +=9;
		// 알파벳이 WXYZ 중 하나라면 + 10초
            }else if (c >= 'W' && c <= 'Z'){
                sum +=10;
            }
        }
        System.out.println(sum);
    }
}