[백준] 5622번: 다이얼 (JAVA)

2025. 5. 8. 14:53알고리즘

https://www.acmicpc.net/problem/5622

 

 

문제설명

각 다이얼마다 알파벳 3개 + 숫자 1개로 구성되어있는데, 입력받은 알파벳 값에 맞게 몇 초가 걸리는지 합계를 구하여 출력하는 문제이다.

(문제 예시)

입력: ADBP

=> A는 숫자 2에 있고 3초가 걸림, D는 숫자 3에 있고 4초가 걸림, B는 숫자 2에 있고 3초가 걸림, P는 숫자 7에 있고 8초가 걸림. 

그러면 출력은 이 걸린 시간들의 합을 출력하면 됨.

출력: 18

 

코드

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

public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

		String[] dials = reader.readLine().split("");
		int sum = 0;

		for (int i = 0; i < dials.length; i++) {
			char dial = dials[i].charAt(0);
			
			if (dial >= 'A' && dial <= 'C') {
				sum += 3;
			} else if (dial >= 'D' && dial <= 'F') {
				sum += 4;
			} else if (dial >= 'G' && dial <= 'I') {
				sum += 5;
			} else if (dial >= 'J' && dial <= 'L') {
				sum += 6;
			} else if (dial >= 'M' && dial <= 'O') {
				sum += 7;
			} else if (dial >= 'P' && dial <= 'S') {
				sum += 8;
			} else if (dial >= 'T' && dial <= 'V') {
				sum += 9;
			} else if (dial >= 'W' && dial <= 'Z') {
				sum += 10;
			} else {
				sum += 2;
			}
		}

		writer.write(String.valueOf(sum));
		writer.newLine();

		writer.flush();
		writer.close();
		reader.close();
	}
}

 

코드설명

입력받은 문자열을 하나하나의 Char값으로 변환한 후, 조건문을 활용해 해당 알파벳이 몇 초가 걸리는지를 sum 변수에 덧셈한다. 그런 다음 sum값을 출력하면 끝.

 

근데 코드가 좀 노가다 느낌이 있고, 계속 생각해보니까 더 효율적인 코드도 작성 가능할 것 같습니다.