728x90
문자를 전부 누르는데 걸리는 시간을 구하는 문제입니다.
각 문자에 대한 시간과 집합을 설정해주고
시간을 계산해서 더해주고,
집합이 같으면 w만큼 추가해주면 됩니다.
특징으로는 공백은 연속으로 입력되도 w를 추가해주지 않아도 됩니다.
#include <iostream>
#include <algorithm>
#include <fstream>
#include <cstring>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
int p, w;
int now = 0;
int result = 0;
int num[2][27] = { { 1, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4 },
{ 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 9, 9, 9, 9 } };
string s;
scanf("%d%d", &p, &w);
getchar();
getline(cin, s);
for (int i = 0; i < s.length(); ++i) {
int index = -1;
if (s[i] >= 'A' && s[i] <= 'Z') {
index = s[i] - 'A' + 1;
}
if (s[i] == ' ') {
index = 0;
}
if (index != -1) {
result += num[0][index] * p;
if (now == num[1][index] && index != 0) {
result += w;
}
now = num[1][index];
}
}
cout << result << endl;
return 0;
}
'알고리즘' 카테고리의 다른 글
[C++] 백준 2615번 오목 (0) | 2019.11.05 |
---|---|
[C++] 백준 4606번 The Seven Percent Solution (0) | 2019.11.05 |
[C++] 백준 5671번 호텔 방 번호 (0) | 2019.11.05 |
[C++] 백준 1855번 암호 (0) | 2019.11.05 |
[C++] 백준 14710번 고장난 시계 (0) | 2019.11.05 |