- 나의 풀이
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
string alpha = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ" };
int num = 0;
int time;
int result = 0;
cin >> str;
for (size_t i = 0;i < str.length();i++) {
if (str[i] == alpha[0] || str[i] == alpha[1] || str[i] == alpha[2]) {
num = 2;
}
else if (str[i] == alpha[3] || str[i] == alpha[4] || str[i] == alpha[5]) {
num = 3;
}
else if (str[i] == alpha[6] || str[i] == alpha[7] || str[i] == alpha[8]) {
num = 4;
}
else if (str[i] == alpha[9] || str[i] == alpha[10] || str[i] == alpha[11]) {
num = 5;
}
else if (str[i] == alpha[12] || str[i] == alpha[13] || str[i] == alpha[14]) {
num = 6;
}
else if (str[i] == alpha[15] || str[i] == alpha[16] || str[i] == alpha[17] || str[i] == alpha[18]) {
num = 7;
}
else if (str[i] == alpha[19] || str[i] == alpha[20] || str[i] == alpha[21]) {
num = 8;
}
else if (str[i] == alpha[22] || str[i] == alpha[23] || str[i] == alpha[24] || str[i] == alpha[25]) {
num = 9;
}
time = 2;
for (int j = 2;j < 10;j++) {
time++;
if (num == j) {
break;
}
}
result += time;
}
cout << result;
return 0;
}
str => 입력받을 문자열
alpha => 알파벳 대문자 전체
num => 숫자 다이얼
time => 걸리는 시간
result => 총 걸리는 시간
ex) WA
str.length() = 2
str[0] = W -> W == alpha[22] -> num=9
비교 | 비교 값 | time |
j=2 == num=9 | false | 3 |
j=3 == num=9 | false | 4 |
j=4 == num=9 | false | 5 |
j=5 == num=9 | false | 6 |
j=6 == num=9 | false | 7 |
j=7 == num=9 | false | 8 |
j=8 == num=9 | false | 9 |
j=9 == num=9 | true | 10 |
str[1] = A -> A == alpha[0] -> num=2
비교 | 비교 값 | time |
j=2 == num=2 | true | 3 |
result = 10 + 3 = 13
- 다른 사람의 풀이
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
int num[] = { 3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,8,9,9,9,10,10,10,10 };
int result = 0;
cin >> str;
for (size_t i = 0;str[i]!='\0';i++) { // 문자열이 끝나기 전까지 반복 (마지막 문자 위치까지 반복)
result += num[str[i] - 'A'];
}
cout << result;
return 0;
}
- -배열의 마지막이 '\0' 임 (널 문자는 문자열의 끝을 의미)
ex) WA
str => 입력 받을 문자열
num => 각 알파벳 별로 숫자를 눌렀을 때 걸리는 시간
ex) a,b,c는 3초, d,e,f는 4초, ... ,w,x,y,z는 10초
result => 총 걸린 시간
i | str[i] |
0 | W |
1 | A |
2 | \0 |
str[i] != '\0' | num[str[i] - 'A'] | result |
str[0] != W | str[0] - 'A' = 'W' - 'A' = 87 - 65 = 22 | result = 0 + num[22] = 10 |
str[1] != A | str[0] - 'A' = 'A' - 'A' = 65 - 65 = 0 | result = 10 + num[0] = 10 + 3 = 13 |
'코딩테스트 > programming_C++' 카테고리의 다른 글
baekjoon #1316_그룹 단어 체커_c++ (0) | 2021.10.27 |
---|---|
baekjoon #2941_크로아티아 알파벳_c++ (0) | 2021.10.26 |
baekjoon #2908_상수_c++ (0) | 2021.10.26 |
baekjoon #1152_단어의 개수_c++ (0) | 2021.10.26 |
baekjoon #1157_단어 공부_c++ (0) | 2021.10.26 |