본문 바로가기
개인 공부/코딩테스트

[C++][백준 5622][문자열 처리] 다이얼 :: seoftware

by seowit 2020. 2. 16.

음 아 이 문제 설명이 부족한 거 같아 0하고 1은 문자로 안 쓰고 그냥 누른다고 설명 해주지!!! 

 

 

 문제 

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

 

5622번: 다이얼

문제 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

www.acmicpc.net

 소스 

#include <iostream>
#include <string>

using namespace std;

int main(void) {
	string number; 
	cin >> number;

	char al[26] = {'A', 'B', 'C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
	int num[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 };

	int count = 0;
	for (int i = 0; i < number.length(); i++) {
		if (number[i] == 0) {
			count += 11; continue;
		}
		else if (number[i] == 1) {
			count += 2; continue;
		}
		else {
			for (int j = 0; j < 26; j++) {
				if (al[j] == number[i]) {
					count += num[j]; break;
				}
			}
		}
	}

	cout << count;
	return 0;
}

댓글