백준 5622번: 다이얼 / C++ 문제풀이

Been·2023년 11월 15일
0

백준

목록 보기
17/23

한 줄 요약 :

알파벳이 들어있는 문자열의 범위를 나누어 범위 안에 해당하는 시간을 더해준다.

풀이 :

1. 26자 알파벳이 들어있는 문자열을 만든다.

char Alphabet[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

2. 15자 이내 의 단어를 입력받는다.

단어 길이는 2이상 15이하이다.

char Word[16];
cin >> Word;

3. 시간을 입력받을 정수 time을 입력한다.

int time = 0;

4. 단어를 한 글자씩 비교해줄 while문을 만든다.

while (Word[i] != 0)

5. 단어의 글자 하나마다 알파벳 차례대로 비교해줄 문을 만든다.

3번의 while문 안에 작성한다.

for (int j = 0; j < 27; j++)

6. 단어 안의 문자에 해당하는 알파벳이 나올 때, 시간을 더해줄 if-else문을 만든다.

if-else문으로 시간을 더하면 단어의 다음 문자로 넘어가야한다.

if (Alphabet[j] == Word[i])
			{
				if (j <= 2) // ABC
					time = time + 3;
				else if (j >= 3 and j <= 5) // DEF
					time = time + 4;
				else if (j >= 6 and j <= 8) // GHI
					time = time + 5;
				else if (j >= 9 and j <= 11) // JKL
					time = time + 6;
				else if (j >= 12 and j <= 14) //  MNO
					time = time + 7;
				else if (j >= 15 and j <= 18) // PQRS
					time = time + 8;
				else if (j >= 19 and j <= 21) // TUV
					time = time + 9;
				else if (j >= 22 and j <= 25) // WXYZ
					time = time + 10;
				i++;
				break;
			}

7. time을 출력한다.

cout << time;

(backtick)(int time)
<C++ code>

#include <iostream>
using namespace std;
int main()
{
	char Alphabet[27] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

	char Word[16];
	cin >> Word;

	int time = 0;
	
	int i = 0;
	while (Word[i] != 0)
	{
		for (int j = 0; j < 27; j++)
		{
			if (Alphabet[j] == Word[i])
			{
				if (j <= 2) // ABC
					time = time + 3;
				else if (j >= 3 and j <= 5) // DEF
					time = time + 4;
				else if (j >= 6 and j <= 8) // GHI
					time = time + 5;
				else if (j >= 9 and j <= 11) // JKL
					time = time + 6;
				else if (j >= 12 and j <= 14) //  MNO
					time = time + 7;
				else if (j >= 15 and j <= 18) // PQRS
					time = time + 8;
				else if (j >= 19 and j <= 21) // TUV
					time = time + 9;
				else if (j >= 22 and j <= 25) // WXYZ
					time = time + 10;

				i++;
				break;
			}
		}
	}
	cout << time;

}
profile
콧콧코코콧코콧ㅅ

0개의 댓글