문제풀이

[JAVA] 백준 5622번 다이얼 : Switch문

IT록흐 2021. 7. 12. 10:14
반응형
 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

 

1. 문제 추상화

 

입력된 문자열의 각 문자와 대응되는 정수와 대응하는 시간의 총합을 구하시오

 

2. 알고리즘

 

첫 번째 방법

Swtich 문 사용하기

 

두 번째 방법

아스키코드를 활용하여 if-elseif문 구현하기

 

3. 풀이

 

첫번째 방법 ( Switch문 )

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		String data = sc.next();
		int timeForCall = 0;
		
		for(int i = 0; i< data.length(); i++) {
			int num = switchCharToNum(data.charAt(i));
			timeForCall += num+1;
		}
		System.out.println(timeForCall);
	}
	
	public static int switchCharToNum(char data) {
		//Swtich 문 구현
		int value = 0;
		switch(data) {
			case 'A' : case 'B' : case 'C' : value = 2; break;
			case 'D' : case 'E' : case 'F' : value = 3; break;
			case 'G' : case 'H' : case 'I' : value = 4; break;
			case 'J' : case 'K' : case 'L' : value = 5; break;
			case 'M' : case 'N' : case 'O' : value = 6; break;
			case 'P' : case 'Q' : case 'R' : case 'S' : value = 7; break;
			case 'T' : case 'U' : case 'V' : value = 8; break;
			case 'W' : case 'X' : case 'Y' : case 'Z' : value = 9; break;
			default : value = 0; break;
		}
		
		return value;
	}

}

 

두 번째 방법 ( if - else 문 )

import java.util.Scanner;

public class Main1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String data = sc.next();
		int timeForCall = 0;
		
		for(int i =0; i < data.length(); i++) {
			timeForCall += swtichCharToNum(data.charAt(i))+1;
		}
		System.out.println(timeForCall);
	}
	
	public static int swtichCharToNum(char ch) {
		int value = 0;
		if(ch >= 65 && ch < 68) value = 2;
		else if(ch < 71) value = 3;
		else if(ch < 74) value = 4;
		else if(ch < 77) value = 5;
		else if(ch < 80) value = 6;
		else if(ch < 84) value = 7;
		else if(ch < 87) value = 8;
		else if(ch < 91) value = 9;
		else value = 0;
		
		return value;
	}

}
반응형