본문 바로가기
Algorithm/Baekjoon

[백준] 5622번 : 다이얼 - Java

by unknownomad 2022. 3. 21.

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

 

5622번: 다이얼

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

www.acmicpc.net



주의점

  • 대문자로 입력
  • 시간의 합 구하기

구현 방법

  • Scanner + for 문 + switch-case
  • BufferedReader + for 문 + switch-case
  • System.in + for 문 + switch-case

풀이

1. Scanner + for 문 + switch-case

import java.util.Scanner;
 
public class Main {
    public static void main(String[] args) {
    
        Scanner in = new Scanner(System.in);
        String str = in.nextLine();
        int cnt = 0;
        int k = str.length();
        
        for(int i = 0; i < k; i++) {
        
            switch(str.charAt(i)) {
                //String.charAt(): 문자열의 문자 가져옴
                //"A" (X) / 'A' (O)
                case 'A' : case 'B': case 'C' : 
                    cnt += 3;
                    break;
                
                case 'D' : case 'E': case 'F' :
                    cnt += 4; 
                    break;
                
                case 'G' : case 'H': case 'I' :
                    cnt += 5; 
                    break;
                
                case 'J' : case 'K': case 'L' : 
                    cnt += 6;
                    break;
                
                case 'M' : case 'N': case 'O' :
                    cnt += 7;
                    break;
                
                case 'P' : case 'Q': case 'R' : case 'S' : 
                    cnt += 8; 
                    break;
                
                case 'T' : case 'U': case 'V' : 
                    cnt += 9;
                    break;
                
                case 'W' : case 'X': case 'Y' : case 'Z' : 
                    cnt += 10;
                    break;
            }
        }
        System.out.print(cnt);
    }
}

 

2. BufferedReader + for 문 + switch-case

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 str = br.readLine();
        int cnt = 0;
        int k = str.length();
        
        for(int i = 0; i < k; i++) {
        
            switch(str.charAt(i)) {
            
                case 'A' : case 'B': case 'C' : 
                    cnt += 3;
                    break;
                
                case 'D' : case 'E': case 'F' :
                    cnt += 4; 
                    break;
                
                case 'G' : case 'H': case 'I' :
                    cnt += 5; 
                    break;
                
                case 'J' : case 'K': case 'L' : 
                    cnt += 6;
                    break;
                
                case 'M' : case 'N': case 'O' :
                    cnt += 7;
                    break;
                
                case 'P' : case 'Q': case 'R' : case 'S' : 
                    cnt += 8; 
                    break;
                
                case 'T' : case 'U': case 'V' : 
                    cnt += 9;
                    break;
                
                case 'W' : case 'X': case 'Y' : case 'Z' : 
                    cnt += 10;
                    break;
            }
        }
        System.out.print(cnt);
    }
}

 

3. System.in + for 문 + switch-case

import java.io.IOException;
 
public class Main {
    public static void main(String[] args) throws IOException {

        int cnt = 0;
        int value;
		
        /*
        백준에서는 조건 내의 값만 입력 받음 = 예외값이 입력되지 않음
        그렇기에 별 생성 없이 원시 입력을 받아 문자값만 알아내 cnt++ 해도 됨
        */
        while(true) {
            value = System.in.read();
            
            if(value == '\n') {
                break;
            }

            if(value < 68) cnt += 3;
            else if(value < 71) cnt += 4;
            else if(value < 74) cnt += 5;
            else if(value < 77) cnt += 6;
            else if(value < 80) cnt += 7;
            else if(value < 84) cnt += 8;
            else if(value < 87) cnt += 9;
            else cnt += 10;
        }
        System.out.print(cnt);
    }
}

성능

  1. System.in + for 문 + switch-case
  2. BufferedReader + for 문 + switch-case
  3. Scanner + for 문 + switch-case

 


출처 : https://st-lab.tistory.com/67

댓글