문제설명

 

소스코드

#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에 더한다.