본문 바로가기
ONLINE JUDGE/문자열

[백준5622] 다이얼

by W_W_Woody 2022. 3. 18.

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

 

5622번: 다이얼

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

www.acmicpc.net


방법1. charAt()이용하기

package s07_string;

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

public class MJ_08_5622 {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String S = br.readLine();
		int count = 0;
		
		for(int i=0;i<S.length();i++) {
			int x  = S.charAt(i);
			if(x<65)  count += 2;//다이얼1
			else if(x<=67) count += 3;//다이얼2
			else if(x<=70) count += 4;//다이얼3
			else if(x<=73) count += 5;//다이얼4
			else if(x<=76) count += 6;//다이얼5
			else if(x<=79) count += 7;//다이얼6
			else if(x<=83) count += 8;//다이얼7
			else if(x<=86) count += 9;//다이얼8
			else if(x<=90) count += 10;//다이얼9
			else count += 11;//다이얼0일때는...?
		}
		System.out.println(count);
	}

}

숫자 아래 문자들을 애초에 아스키코드로 변환하여 charAt()메서드를 이용하여 if문으로 조건 체크하며 초를 counting해줬다!

 

 

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class Main {
	public static void main(String[] args) throws IOException {
    
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
		String s = br.readLine();
        
		int count=0;
		int k = s.length();
        
		for(int i = 0 ; i < k ; i++) {
        
			switch(s.charAt(i)) {
			case 'A' : case 'B': case 'C' : 
				count += 3; 
				break;
                
			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(s.charAt(i)) {
case 'A' : case 'B': case 'C' :
이 부분에서 charAt()메서드를 쓰면 아스키코드가 나오니까
65~90 중 하나의 수가 나오는데
어떻게 'A' 'B' 'C'와 비교가 되는지?

-

'A', 'B', 'C'도 숫자로 이루어진 아스키값.
다만, char형의 경우 출력을 할 때 그에 대응하는 문자를 출력해줄 뿐이다.

 

System.out.print( (char)65 ); 를 하면, A문자가 출력되고
반대로
System.out.print( (int)'A'); 를 하면 65가 출력된다.

'ONLINE JUDGE > 문자열' 카테고리의 다른 글

[백준2941] 크로아티아 알파벳  (0) 2022.03.18
[백준2908] 상수  (0) 2022.03.11
[백준1152] 단어의 개수  (0) 2022.03.11
[백준1157] 단어 공부  (0) 2022.03.10
[백준2675] 문자열 반복  (0) 2022.03.09

댓글