백준

백준 5622 C++

solfa 2023. 12. 26. 23:47

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

 

5622번: 다이얼

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

www.acmicpc.net

생각
abc는 3초 / def는 4초 / ghi는 5초…
알파벳을 입력 받고 해당하는 초 누적으로 더해서 출력해주기
알파벳 인식을 어떤 식으로 해야되나 고민!


1. if문이나 switch문으로 돌린다
2. 아스키코드를 사용한다 ( 형변환 사용!)

나는 2번으로 풀었다!
1. 입력 받은 문자열의 인덱스 하나하나를 검사한다!
2. 여기서 (int)형변환을 사용해서 숫자로 변경한다
3. -65(대문자 A의 아스키코드 값)를 해주고 3으로 나누어준다
ex) A : (65-65)/3 = 0
B : (66-65)/3 = 0
C : (67-65)/3 = 0
… 이런식으로!
4. +3초를 해준다
5. 7과 9는 알파벳이 4개씩 있으니까 예외처리를 해준다
6. S, V, Y, Z일 때 누적 값에서 하나씩 빼준다! 왜냐면 하나 더 더해진 걸로 계산됐을거니까!

정답 코드

#include <iostream>
using namespace std;

int main(){
    int sum = 0;
    string s;
    cin >> s;
    for(int i=0 ; i<s.length() ; i++){
        sum += (((int)s[i]-65)/3)+3;

        if(s[i] == 'S' || s[i] == 'V' || s[i] == 'Y' || s[i] == 'Z'){
            sum--;
        }
    }
    cout << sum;
}


 

728x90

'백준' 카테고리의 다른 글

백준 1789 C++ 시간초과  (2) 2024.01.31
백준 10816 C++  (0) 2023.12.27
백준 2903번 C++  (0) 2023.12.26
백준 11047 C++  (1) 2023.12.24
백준 1342번 C++  (1) 2023.12.23