본문 바로가기

백준

백준5622 - 다이얼

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

 

5622번: 다이얼

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

www.acmicpc.net

문제에서 주어진 상황은 문자열로 되어있는 번호를 해석하는 것이다.

각 번호마다 해당 문자가 써있고 1번 다이얼을 누르는데 걸린 시간은 2초가 걸린다.

1보다 큰 번호들은 1씩 증가한다.(ex. 3번 다이얼은 5초, 7번 다이얼은 9초.....)

문제 꼼꼼히 안보면 틀리는 함정이 존재한다.(1번 다이얼부터 시작이 아니라 2번 다이얼부터 문자가 시작이다.)

말 그대로 구현해주면 되는 문제

좀 더 짧게 짤 수 없을까 고민하게 된다.

 

#include <iostream>
#include <string>
using namespace std;
int main() {
	string s;
	int sum = 0;


	cin >> s;
	for (unsigned int i = 0; i < s.size(); i++) {
		if ('A' <= s[i] && s[i] <= 'C') { //2번 다이얼에 있는 문자들(A ~ C)
			sum = sum + 3;
		}
		else if ('D' <= s[i] && s[i] <= 'F') { //3번 다이얼에 있는 문자들(D ~ F)
			sum = sum + 4;
		}
		else if ('G' <= s[i] && s[i] <= 'I') { //4번 다이얼에 있는 문자들(G ~ I)
			sum = sum + 5;
		}
		else if ('J' <= s[i] && s[i] <= 'L') { //5번 다이얼에 있는 문자들(J ~ L)
			sum = sum + 6;
		}
		else if ('M' <= s[i] && s[i] <= 'O') { //6번 다이얼에 있는 문자들(M ~ O)
			sum = sum + 7;
		}
		else if ('P' <= s[i] && s[i] <= 'S') { //7번 다이얼에 있는 문자들(P ~ S)
			sum = sum + 8;
		}
		else if ('T' <= s[i] && s[i] <= 'V') { //8번 다이얼에 있는 문자들(T ~ V)
			sum = sum + 9;
		}
		else if ('W' <= s[i] && s[i] <= 'Z') { //9번 다이얼에 있는 문자들(W ~ Z)
			sum = sum + 10;
		}
	}
    
	cout << sum << endl;
	return 0;
}

'백준' 카테고리의 다른 글

백준9461 - 파도반 수열  (0) 2019.06.22
백준1449 - 수리공 항승  (0) 2019.06.20
백준3986 - 좋은단어  (0) 2019.06.19
백준2870 - 수학숙제  (0) 2019.06.19
백준17213 - 과일서리  (0) 2019.06.19