문제설명
소스코드
#include<iostream>
using namespace std;
int main()
{
string input; int sum = 0;
cin >> input;
for (int i = 0; i < input.length(); ++i)
{
if (input[i] == 'A' || input[i] == 'B' || input[i] == 'C') sum += 3;
else if (input[i] == 'D' || input[i] == 'E' || input[i] == 'F') sum += 4;
else if (input[i] == 'G' || input[i] == 'H' || input[i] == 'I') sum += 5;
else if (input[i] == 'J' || input[i] == 'K' || input[i] == 'L') sum += 6;
else if (input[i] == 'M' || input[i] == 'N' || input[i] == 'O') sum += 7;
else if (input[i] == 'P' || input[i] == 'Q' || input[i] == 'R' || input[i] == 'S') sum += 8;
else if (input[i] == 'T' || input[i] == 'U' || input[i] == 'V') sum += 9;
else if (input[i] == 'W' || input[i] == 'X' || input[i] == 'Y' || input[i] == 'Z') sum += 10;
}
cout << sum;
}
또는
#include<iostream>
using namespace std;
int main() {
string input;
cin >> input;
int arr[] = { 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 sum = 0;
for (int i = 0; i < input.length(); ++i) sum += arr[input[i] - 'A'];
cout << sum;
}
풀이
첫 번째 코드 설명
- for문으로 문자열의 길이만큼 루프를 돈다.
- if문으로 각 문자에 맞게 sum에 더한다.
두 번째 코드 설명
- 배열에는 알파벳의 개수 만큼 숫자가 들어가 있고, 각 원소는 A~Z에 대응하는 숫자이다.
- 이 또한 문자열의 길이만큼 루프를 도는데, sum에는 각 문자열에 'A'(65)를 뺀 arr배열의 인덱스값을 더한다. 예를 들어 'B'는 아스키코드상으로 66이므로 'A'를 빼면 1이다 즉 arr[1]인 3을 sum에 더한다.
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[C++] 백준 5단계 - 2444번 문제(별 찍기 -7) (0) | 2023.04.07 |
---|---|
[C++] 백준 - 27433번 문제 (팩토리얼 2)(재귀 사용X) (0) | 2023.04.06 |
[C++] 백준 5단계 - 2908번 문제 (0) | 2023.04.05 |
[C++] 백준 5단계 - 1152번 문제 (0) | 2023.04.05 |
[C++] 백준 5단계 - 2675번 문제 (0) | 2023.04.03 |