#include <iostream>
using namespace std;
int main() {
string answer = "ADGJMPTW";
string str;
int count = 0;
cin >> str;
for(int i = 0; i < str.length(); i++) {
for(int j = 0; j < answer.length(); j++) {
if(str[i] < answer[j]) break;
count++;
}
count+=2;
}
cout << count;
}
각각 모든 알파벳마다 if문이나 switch문을 지정하기가 너무 귀찮아서 각 해당하는 알파벳들의 시작점보다 크지 않으면 숫자가 넘어가지 않겠구나 라는 것을 생각하여 배열로 만들었습니다.
그렇게 해서 각 수문장 알파벳을 넘기지 못하면 해당 숫자가 위치임을 알게 되고 거기에 1번을 누르는데 2초가 걸리므로 2를 추가하는 형태로 구현하여 timecomplexity와 귀찮음을 동시에 잡았습니다.
문제: https://www.acmicpc.net/problem/5622
5622번: 다이얼
첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.
www.acmicpc.net
'Problem Solving > 백준' 카테고리의 다른 글
[백준/C++] 10828번 스택 (0) | 2022.01.24 |
---|---|
[백준/C++] 8958번 OX퀴즈 (0) | 2022.01.24 |
[백준/C++] 5598번 카이사르 암호 (0) | 2022.01.24 |
[백준/C++] 4659번 비밀번호 발음하기 (0) | 2022.01.24 |
[백준/C++] 1331번 그룹 단어 체커 (0) | 2022.01.24 |