백준 5622번 다이얼 - 자바

728x90

www.acmicpc.net/problem/5622

 

5622번: 다이얼

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

www.acmicpc.net


이 문제는 다이얼이 핵심이다.

문자열이 입력되는데, 문자 하나하나를 비교하여 해당 다이얼에 번호가 눌린다.

숫자1을 걸려면 총 2초가 필요하다는건 숫자1을 누르고 다이얼이 초기화 된다. 

초기화 되면서 1초가 걸리는 것이다.

그러니 1,2,3 이라면 1초 + 1초 + 2초 + 1초 + 3초 + 1초 가 되는 것이다.

 

이 문제를 해결하기 위해서는 다이얼에 쓰여진 문자가 어떤 번호를 가르키는지가 중요하다.

 

저는 이 문제를 Switch case를 사용하여 풀이하였습니다.

import java.util.Scanner;
class Main {  
  public static void main(String args[]) { 
    Scanner sc = new Scanner(System.in);
    String s = sc.nextLine();
    int result = 0;
    for(int i=0; i<s.length(); i++){
      switch(s.charAt(i)){
        case 'A': case 'B': case 'C': result += 2;
          break;
        case 'D': case 'E': case 'F': result += 3;
          break;
        case 'G': case 'H': case 'I': result += 4;
          break;
        case 'J': case 'K': case 'L': result += 5;
          break;
        case 'M': case 'N': case 'O': result += 6;
          break;
        case 'P': case 'Q': case 'R': case 'S': result += 7;
          break;
        case 'T': case 'U': case 'V': result += 8;
          break;
        case 'W': case 'X': case 'Y': case 'Z': result += 9;
          break;
        default: result += 0;
          break;
      }   
    }
    System.out.println(result+s.length());
  } 
}

 

입력은 Scanner로 받았습니다.

 

입력된 문자열을 s 변수에 담습니다.

result는 결과를 출력하기 위한 변수입니다.

 

 

배열도 있고 해쉬도 있고 리스트도 있지만 이런 문제에는 switch case가 제일 좋다고 생각했습니다.

문자열 s 만큼 반복해주면서 그 문자가 해당하는 곳에 result 를 + 해주는 것입니다.

 

총 더해진 값에 + s의 문자열 길이 만큼 더해줍니다.

다이얼이 초기화된 횟수이며, 1초씩 걸리는 것을 더해줍니다.

 

 

반응형