(백준BAEKJOOB )- 5622번 -다이얼 "c++"

2023. 3. 6. 15:49언어/c, c++

728x90

문제 해석 부터하면 2에는 a b c

3에는 d e f.  .  . 이런식으로 이어진다.

다이얼 숫자에 1씩 추가하여 조건문으로 풀수있다.

 

코드 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()
{
	int times[] = { 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 };
	char phone[16]; //최대 16글자
	int result = 0; //계산 떄문에 초기화 필수
	cin >> phone;
	for (int i = 0; phone[i] != '\0'; i++)
		result += times[phone[i] - 'A'];
	cout << result;
}

배열로 푸는 방법도 존재한다. 나는 메모리 절약이 많이 될줄 알았는데 반복문때문에 그런지

메모리 가 거시거 기기였다..

그냥 이 문제는 가독성 좋은 위에 코드를 써야곘다 ㅋㅋ

728x90