백준 단계별로 풀어보기(C++)/5)문자열

백준 5622) 다이얼 (C++)

코테 2023. 3. 25. 21:22

전체 코드

#include <iostream>

int main()
{
	char s[16];
	int idx = 0, sec = 0;
	std::cin >> s;
	while (s[idx] != '\0')
	{
		if (s[idx] == 'A' || s[idx] == 'B' || s[idx] == 'C')
		{
			sec += 2;
		}
		else if (s[idx] == 'D' || s[idx] == 'E' || s[idx] == 'F')
		{
			sec += 3;
		}
		else if (s[idx] == 'G' || s[idx] == 'H' || s[idx] == 'I')
		{
			sec += 4;
		}
		else if (s[idx] == 'J' || s[idx] == 'K' || s[idx] == 'L')
		{
			sec += 5;
		}
		else if (s[idx] == 'M' || s[idx] == 'N' || s[idx] == 'O')
		{
			sec += 6;
		}
		else if (s[idx] == 'P' || s[idx] == 'Q' || s[idx] == 'R'|| s[idx] == 'S')
		{
			sec += 7;
		}
		else if (s[idx] == 'T' || s[idx] == 'U' || s[idx] == 'V')
		{
			sec += 8;
		}
		else if (s[idx] == 'W' || s[idx] == 'X' || s[idx] == 'Y' || s[idx] == 'Z')
		{
			sec += 9;
		}

		sec++;
		idx++;
	}

	std::cout << sec;
}

풀이

  • char 배열 선언, 단어는 15글자 들어가고, '\0'이 글자끝에 항상 들어가는것을 고려해서 다음과 같이 선언
char s[16];
  • '\0'을 만날때까지 반복하는 반복문
  • if문에 해당글자에 따른 숫자를 sec 변수에 더함
  • 항상 해당작업은 1초씩 더 걸린다 했으므로 다음 반복문으로 넘어가기전에 sec 변수에 1을 더함
  • 다음 값 검사를 위해 인덱스를 1 더함
while (s[idx] != '\0')
{
	if (s[idx] == 'A' || s[idx] == 'B' || s[idx] == 'C')
	{
		sec += 2;
	}
	else if (s[idx] == 'D' || s[idx] == 'E' || s[idx] == 'F')
	{
		sec += 3;
	}
	else if (s[idx] == 'G' || s[idx] == 'H' || s[idx] == 'I')
	{
		sec += 4;
	}
	else if (s[idx] == 'J' || s[idx] == 'K' || s[idx] == 'L')
	{
		sec += 5;
	}
	else if (s[idx] == 'M' || s[idx] == 'N' || s[idx] == 'O')
	{
		sec += 6;
	}
	else if (s[idx] == 'P' || s[idx] == 'Q' || s[idx] == 'R'|| s[idx] == 'S')
	{
		sec += 7;
	}
	else if (s[idx] == 'T' || s[idx] == 'U' || s[idx] == 'V')
	{
		sec += 8;
	}
	else if (s[idx] == 'W' || s[idx] == 'X' || s[idx] == 'Y' || s[idx] == 'Z')
	{
		sec += 9;
	}

	sec++;
	idx++;
}