끄적끄적 코딩
article thumbnail
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

검색 태그