나 개발자 진짜 되냐?

백준 C++ 5622번 다이얼 ( switch ) 본문

C++을 시작해봐요!/구현문제를 풀어봤어요!

백준 C++ 5622번 다이얼 ( switch )

Snow Rabbit 2025. 12. 24. 16:25

 

크리스마스 이브군요!

다들 좋은사람과 좋은날을 보내길 바라겠습니다.

물론 내일도요!

크리스마스에 쉬는건 참 좋은거같습니다.

선물도 나누고, 휴일이라 집에서 쉬기도 하고

산타 분장도 해보고 말이죠.

 

저는 크리스마스에 뭐하냐고요?

저는 알바를 갑니다..^-^

 

아직 백수인 저는

공휴일 = 일하는 날 이기 때문이지요.

 

제 가까운사람들에게 조금 미안하긴 합니다.

이해해줘서 고맙읍니다.

 

그래도 오늘의 문제를 풀어봐야겠지요! 헷갈렸던게 있어서 오늘은 정리하러왔어요!

같이 봐요!!


 

 

문제... 가 생각보다 안 어렵다는 생각이 들었습니다.

근데 처음에 사진이 안 보여서 막 찾아다녔죠.

사진이 깨져서 영어단어로 갑자기 숫자가 되니까 이상하더라구요.

근데 누가 새로고침하면 괜찮아진다 해서 했더니 됐슴네다.

 

여하튼 그냥 일일히 해도 될 거 같은데? 정말 하나하나 쓰는 문제일까? 하며 나는 스위치를 떠올렸죠...

뭔가 그런 조건문 왕 많을 때 case 하면 좋았던 기억이 나네요

 

 

처참한... 상태......

바로 나의 문법의 부족함을 느끼고 지 선생을 찾아갔슴니다.

 

지 선생은 스위치로 풀 필요 없다고 했지만

나는 집요하게 그래도 스위치로 진짜 못 푸냐!!라고 물어보니..

그런데! 스위치문으로도 문제를 풀 수 있다고 합니다.

 

 switch

1. 한 개의 값을 기준

2. case에는 딱 떨어지는 값 비교가능

 

즉, 위에 쓴 조건문은 절대 안 된다는 말 씀..

아니 근데 사실 문법도 틀렸다 && 이것도 아니고.. = 이것도 한 개가 아니라 두 개..ㅋ

따라 쓰지 마세요....ㅋㅋ

 

그래서 만약에 쓰려면..!!

for (char c : s) {
        switch (c) {
            case 'A':
            case 'B':
            case 'C':
                sum += 3;
                break;

            case 'D':
            case 'E':
            case 'F':
                sum += 4;
                break;

            case 'G':
            case 'H':
            case 'I':
                sum += 5;
                break;
                ......
                
}

 

이렇게 쓸 수 있습죠

 

저렇게 쓰면 되는구나.....

그래도 자주 안 쓴다니까.. 기억만 조금.. 해놔야지..

 

아! 그래서 풀었냐고요!?

녜!!!

 

ㅋㅋㅋ 내 처참한.. 답도 공개..

 

공개와 동시에, 가장 현명하게 푸는지 선생의 답을 봤슴니다.

 

그리고 특이한 사실을 알게 되었죠

문자열도.. 크기가?! 분간이 된다는 것..

 

C++에서는 문자도 숫자처럼 크기 비교가 된다고 합니다!!

 

그래서..

 

#include <bits/stdc++.h>
using namespace std;

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    string s;
    cin >> s;

    int sum = 0;
    for (char c : s) {
        if (c <= 'C') sum += 3;        // ABC
        else if (c <= 'F') sum += 4;   // DEF
        else if (c <= 'I') sum += 5;   // GHI
        else if (c <= 'L') sum += 6;   // JKL
        else if (c <= 'O') sum += 7;   // MNO
        else if (c <= 'S') sum += 8;   // PQRS
        else if (c <= 'V') sum += 9;   // TUV
        else sum += 10;                // WXYZ
    }

    cout << sum;
}

 

이런 식이 가능하다는 것..!!

문자열도 크기비교가 된다.. 메모메모

 

배운 것

switch문과 문자열도 대소비교가 가능하다!

case에 조건문 못쓴다.

switch문에는 값이 한 개만 들어간다.

 

오늘은 산타 느낌나게 존댓말로 마무리한다.

앗..마무리한다더니...ㅋㅋ
!! 마무리합니다.

 

다들 즐거운 성탄절 되세요 :)