본문 바로가기

문과 코린이의, [C. C++] 기록/C++ 백준 문제풀이

[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 다이얼 (5622)

반응형

[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 다이얼 (5622)

[문과 코린이의 IT 기록장] C++ 백준 문제풀이 - 다이얼 (5622)

 


 

 

5622번: 다이얼

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

www.acmicpc.net

 

[ 문제 ]

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.

[ 입력 ]

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어의 길이는 2보다 크거나 같고, 15보다 작거나 같다.

[ 출력 ]

첫째 줄에 다이얼을 걸기 위해서 필요한 최소 시간을 출력한다.

 


[ 코드 1 ]

#include<iostream>
using namespace std;

int main() {
	string a; // 문자열 입력 변수
	cin >> a;

	int time = 0; // 총 시간 합계 변수

	for (int i = 0; a[i] != NULL; i++) {
		if (a[i] == 'A' || a[i] == 'B' || a[i] == 'C')
		{
			time += 3;
		}
		else if (a[i] == 'D' || a[i] == 'E' || a[i] == 'F')
		{
			time += 4;
		}
		else if (a[i] == 'G' || a[i] == 'H' || a[i] == 'I')
		{
			time += 5;
		}
		else if (a[i] == 'J' || a[i] == 'K' || a[i] == 'L')
		{
			time += 6;
		}
		else if (a[i] == 'M' || a[i] == 'N' || a[i] == 'O')
		{
			time += 7;
		}
		else if (a[i] == 'P' || a[i] == 'Q' || a[i] == 'R' || a[i] == 'S')
		{
			time += 8;
		}
		else if (a[i] == 'T' || a[i] == 'U' || a[i] == 'V')
		{
			time += 9;
		}
		else if (a[i] == 'W' || a[i] == 'X' || a[i] == 'Y' || a[i] == 'Z')
		{
			time += 10;
		}
	}

	cout << time << endl;
}

[ 코드 2 ]

#include<iostream>
using namespace std;

int main() {
	string a; // 문자열 입력 변수
	cin >> a;

	int time[] = { 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 result = 0; // 최종 값

	for (int i = 0; a[i] != NULL; i++) {
		result += time[a[i] - 'A'];
	}

	cout << result << endl;
}

 


* 유의사항
- 아직 공부하고 있는 문과생 코린이가, 정리해서 남겨놓은 정리 및 필기노트입니다.
- 정확하지 않거나, 틀린 점이 있을 수 있으니, 유의해서 봐주시면 감사하겠습니다.
- 혹시 잘못된 점을 발견하셨다면, 댓글로 친절하게 남겨주시면 감사하겠습니다 :)
반응형