관리 메뉴

Just Do it

[백준/자바] 5622번: 다이얼 본문

신입 개발자가 되기 위해 공부했던 독학 자료들/Java 연습문제 (백준)

[백준/자바] 5622번: 다이얼

Seojoo21 2022. 2. 15. 11:47

1. 문제 

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

 

5622번: 다이얼

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

www.acmicpc.net

2.  내 코드 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String str = sc.nextLine();
		int count = 0;
		
		// 1. switch-case 문을 활용하여 입력받은 대문자의 해당하는 숫자를 더해나간다. 
		for(int i=0; i<str.length(); i++) { 	
			//2. 입력받은 문자열 내 첫번째 문자부터 확인한다. 
			switch(str.charAt(i)) {
				case 'A' : case 'B' : case 'C': // i번째 문자가 'A', 'B', C' 이면  
					count += 3; // count에 3을 더한다. 
					break; // 그리고 해당 switch 문을 빠져나가고 그 다음 문자를 확인한다.  
					
				case 'D' : case 'E' : case 'F':
					count += 4;
					break;
				
				case 'G' : case 'H' : case 'I' :
					count += 5;
					break;
					
				case 'J' : case 'K' : case 'L' :
					count += 6;
					break;
					
				case 'M' : case 'N' : case 'O' :
					count += 7;
					break;
					
				case 'P' : case 'Q' : case 'R' : case 'S' :
					count += 8;
					break;
					
				case 'T' : case 'U' : case 'V' :
					count += 9;
					break;
					
				case 'W' : case 'X' : case 'Y' : case 'Z' :
					count += 10;
					break;
			}
			
		}
		
		System.out.print(count); // 그동안 switch-case 문을 돌며 더해온 count를 출력한다. 
		
	}

}

 

3. 다시 체크하고 넘어갈 부분 

1) 오랜만에 switch-case 문을 사용했다. 오랜만에 써서 그런지 꽤나 낯설게 느껴진다. switch-case문 다른 예제를 살펴보자. 

2) 사실 제일 먼저 이 문제를 보았을 때는 ASCII 코드가 떠올랐다. (대문자 A의 아스키코드가 65이니 이걸 기준으로 범위를 나눠서 count 입력값을 주면 되지 않을까?) 그런데 풀이방법이 잘 떠오르지 않았는데 방금 전 생각나서 아래처럼 다시 풀어보았고 성공했다.

 

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		String str = sc.nextLine();
		int count = 0;
		
		for(int i=0; i<str.length(); i++) { 	
			int num = (int)(str.charAt(i));
            
			 // ASCII코드 이용. 대문자 'A'의 아스키 코드는 65이다. 
			if(num<68) count+=3;
			else if(num<71) count+=4;
			else if(num<74) count+=5;
			else if(num<77) count+=6;
			else if(num<80) count+=7;
			else if(num<84) count+=8;
			else if(num<87) count+=9;
			else count+=10;
		
		}
		
		System.out.print(count);
		
	}

}