[백준 String] 5622번 문제

Kwon·2023년 11월 16일

백준

목록 보기
13/22

백준 5622번 문제

풀이

  • 전화번호 다이얼 1~0까지 각 영어 알파벳이 걸려있는 문제
  • 한 다이얼을 누를 시 해당 시간을 더하는 문제
  • 각 다이얼에 걸려있는 알파벳을 클릭 할 시 시간을 구해야 하는 문제로 어려워 보이지만 굉장히 간단한 문제
import java.util.Scanner;

public class String10 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int initNum = 0;
        String[] word
                = {"1", "ABC", "DEF", "GHI", "JKL", "MNO", "PRQS",
        "TUV", "WXYZ"};

        String S = sc.nextLine();

        for (int i = 0; i < S.length(); i++) {
            switch (S.charAt(i)) {
                case 'A':
                case 'B':
                case 'C':
                    initNum += 3;
                    break;
                case 'D':
                case 'E':
                case 'F':
                    initNum +=4;
                    break;
                case 'G':
                case 'H':
                case 'I':
                    initNum += 5;
                    break;
                case 'J':
                case 'K':
                case 'L':
                    initNum +=6;
                    break;
                case 'M':
                case 'N':
                case 'O':
                    initNum +=7;
                    break;
                case 'P':
                case 'Q':
                case 'R':
                case 'S':
                    initNum += 8;
                    break;
                case 'T':
                case 'U':
                case 'V':
                    initNum += 9;
                    break;
                case 'W':
                case 'X':
                case 'Y':
                case 'Z':
                    initNum += 10;
                    break;
                default:
                    initNum += 2;
            }
        }
        System.out.println(initNum);
    }
}

1. 다이얼 설정

Scanner sc = new Scanner(System.in);
int initNum = 0;
String[] word
        = {"1", "ABC", "DEF", "GHI", "JKL", "MNO", "PRQS",
"TUV", "WXYZ"};
String S = sc.nextLine();

너무 깊게 생각 할 필요가 없고 해당 숫자에 걸려있는 알파뱃을 순차적으로 배열에 넣으면 된다. 그리고 S에는 입력할 알파벳을 입력한다.

2. 다이얼 누름

for (int i = 0; i < S.length(); i++) {
            switch (S.charAt(i)) {
                case 'A':
                case 'B':
                case 'C':
                    initNum += 3;
                    break;
                case 'D':
                case 'E':
                case 'F':
                    initNum +=4;
                    break;
                case 'G':
                case 'H':
                case 'I':
                    initNum += 5;
                    break;
                case 'J':
                case 'K':
                case 'L':
                    initNum +=6;
                    break;
                case 'M':
                case 'N':
                case 'O':
                    initNum +=7;
                    break;
                case 'P':
                case 'Q':
                case 'R':
                case 'S':
                    initNum += 8;
                    break;
                case 'T':
                case 'U':
                case 'V':
                    initNum += 9;
                    break;
                case 'W':
                case 'X':
                case 'Y':
                case 'Z':
                    initNum += 10;
                    break;
                default:
                    initNum += 2;
            }
        }
        System.out.println(initNum);
    }
}

더 간단하게 할 방법이 있을 것 같지만 나는 단순하게 생각하는게 좋다 생각해 약간 노가다 식 코드를 구현해봤다. 디폴트 값 까진 2초가 걸리니, 나머지 해당하는 알파벳은 1초 씩 증가하는 식으로 구현하면 된다. 그리고 for문에선 내가 받았던 글자 S를 하나 씩 검사해 해당하는 알파벳의 시간을 추가하면 된다.
(알파벳 하나 입력 시 다시 원점으로 돌아가는 식이기에 각 케이스 문에 break문을 써준다.)

profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글