반응형
https://www.acmicpc.net/problem/5622
풀이
#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까지 얼만큼의 시간이 걸리는지 초 단위를 나열해주는 배열을 통해 구해주었습니다.
저는 감을 못 잡겠어서 다른 블로그의 풀이를 얼핏 보고서 유도를 해냈는데 그러지 말고 생각하는 시간을 충분히 가지고 푸신다면 풀 수 있는 문제입니다..
반응형
'IT 프로그래밍 > 백준' 카테고리의 다른 글
[C++] 백준 11718번 그대로 출력하기 (0) | 2024.03.25 |
---|---|
[C++] 백준 3003 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2024.03.25 |
[C++] 백준 2908 상수 (0) | 2024.03.24 |
[C++] 백준 2675 문자열 반복 (0) | 2024.03.22 |
[C++] 11654 ASCII 코드 (0) | 2024.03.20 |