[백준] 5622번 : 다이얼- Java(자바)

이정우·2021년 9월 5일
0

백준

목록 보기
12/32

이번 문제는 옛날 다이얼 전화기를 갖고 문자를 입력 받았을 때 다이얼 전화기로 변환하여 치는 시간을 계산하는 문제였습니다. for문을 쓸까 아스키 코드를 사용할까 고민하다가 그냥 고전적이고 보기 좋은 switch문을 사용했습니다.

import java.util.Scanner;
public class dial_5622 {
	public static int Dial(String input) { //Dial메서드. 문자열 입력 받으면 문자를 하나씩 짤라내서 알맞는 시간 계산
		int time = 0; //총 걸린 시간
		char a;
		for (int i = 0; i < input.length(); i++) {
			a = input.charAt(i);
			switch (a) {
			case 'A':
			case 'B':
			case 'C':
				time += 3;
				break;
			case 'D':
			case 'E':
			case 'F':
				time += 4;
				break;
			case 'G':
			case 'H':
			case 'I':
				time += 5;
				break;
			case 'J':
			case 'K':
			case 'L':
				time += 6;
				break;
			case 'M':
			case 'N':
			case 'O':
				time += 7;
				break;
			case 'P':
			case 'Q':
			case 'R':
			case 'S':
				time += 8;
				break;
			case 'T':
			case 'U':
			case 'V':
				time += 9;
				break;
			case 'W':
			case 'X':
			case 'Y':
			case 'Z':
				time += 10;
				break;
			}

		}
		return time;//시간 반환.
	}

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); //스캐너 객체 생성
		String input = sc.next(); //문자열 입력
		System.out.println(dial_5622.Dial(input)); //Dial메서드를 호출해서 결과 계산
	}
}

switch문과 for문을 사용해서 별 문제 없이 풀었습니다. 오류가 떠서 뭔가 했더니 switch문에서

			case 'A', 'B', 'C':
				time += 3;
				break;

이런식으로 한 줄로 조건을 입력해주니 백준에선 에러를 띄워주는걸 알 수 있었습니다. 그래서 하나씩 조건을 줘서 다시 올렸습니다. 문제를 풀다가 생긴 의문점이랑 느낌점은 상근이가 참 많이 나오는거 같고 이 다이얼 전화기는 숫자 0과 1은 입력이 불가능할까? 였습니다.

출처 : 백준 5622번 https://www.acmicpc.net/problem/5622

profile
프로그래밍 공부 중!

0개의 댓글