IT 프로그래밍/백준

[C++] 백준 5622 다이얼

기술1 2024. 3. 25. 11:06
반응형

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

 

5622번: 다이얼

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

www.acmicpc.net

풀이


#include <iostream>
#include <string>

using namespace std;

int main()
{
	string a;
	int arr[26] = { 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 };
	cin >> a;

	int count = 0;
	for (int i = 0; i < a.length(); i++)
	{
		count += arr[(int)a[i] - 65];
	}

	cout << count << endl;
}

처음 접근할 때 시간이 좀 걸렸습니다. 배열을 "ABCDEF ... 이런 식으로 만들어서 해야되는건가? 싶기도 했습니다. 대문자를 숫자로 변환해주는 것은 ASCII코드를 이용하면 되겠가 싶어서 그것까지는 되었는데 int arr을 유도하기까지 시간이 좀 걸렸습니다. 

 

먼저 for문같은 경우는 a[i]에 입력된 대문자를 int를 통해 ASCII코드로 바꾸어준 다음에 ASCII코드는 65부터 시작하기 때문에 -65를 통해서 배열의 첫번째부터 대칭이 되도록 해주었습니다. 

 

따라서 arr에는 A부터 Z까지 얼만큼의 시간이 걸리는지 초 단위를 나열해주는 배열을 통해 구해주었습니다. 

 

저는 감을 못 잡겠어서 다른 블로그의 풀이를 얼핏 보고서 유도를 해냈는데 그러지 말고 생각하는 시간을 충분히 가지고 푸신다면 풀 수 있는 문제입니다.. 

 

반응형