본문 바로가기
공부기록/[Algorithm]

백준 5622번 <다이얼> - C++

by RiverWon 2024. 8. 3.

 

생각


1. 입력받은 문자열의 길이만큼 반복 

2. 각 문자에 해당하는 숫자를 sec변수에 더해줌

 

#include <iostream>
#include <string>

using namespace std;

int main() {
    
    int sec = 0;
    string str;
    cin >> str;
    
    for(int i=0; i<str.length(); i++){
        if(str[i] == 'A' || str[i] == 'B' || str[i] == 'C' ) {sec += 3;}
        else if(str[i] == 'D' || str[i] == 'E' || str[i] == 'F' ) {sec += 4;}
        else if(str[i] == 'G' || str[i] == 'H' || str[i] == 'I' ) {sec += 5;}
        else if(str[i] == 'J' || str[i] == 'K' || str[i] == 'L' ) {sec += 6;}
        else if(str[i] == 'M' || str[i] == 'N' || str[i] == 'O' ) {sec += 7;}
        else if(str[i] == 'P' || str[i] == 'Q' || str[i] == 'R' || str[i] == 'S' ) {sec += 8;}
        else if(str[i] == 'T' || str[i] == 'U' || str[i] == 'V') {sec += 9;}
        else{sec += 10;}
    }
    cout << sec;
    
    return 0;
}

몇 번 시도를 했다. 분명 오류가 없는데, 오답으로 나왔다. sec변수를 0으로 초기화하지 않아서 그렇다. 내가 테스트한 케이스에서는 모두 정상동작했지만, 데이터사이즈가 커질 때 영향이 있나보다. 변수 초기화하는 습관을 들이자

 

분명 이렇게 조건문 덕지덕지가 아닐 거라 생각하고 다른 사람의 답안을 찾아봤는데 아스키 코드 값으로 범위를 지정하더라. 똑똑한사람들!