by CodeJin19
6 min read

Categories

Tags

오늘의 문제는 “2290번 LCD Test”.

숫자를 입력받으면 그 숫자를 ‘-‘, ‘ ’ 두 기호를 사용해서 디지털 시계처럼 표현해야 하는 문제이다.

코드가 길고, 이 문제 역시 간단한 이유로 틀렸기 때문에

왜 틀렸는지부터 말하고 소스코드를 본문 마지막에 올리겠다.

문제에 각 숫자의 사이에는 공백이 한 칸 있어야 한다는 조건이 있었다.

이 조건을 보고 문자의 끝에도 공백이 있는지 확인을 했고,

문자의 끝에 공백이 있다는 것을 알았다.

그리고 당연히 문자의 시작에도 공백이 있을 것이라고 생각했는데 그것이 문제였다.

1234가 있으면

1-2-3-4-로 출력을 해야하는데

-1-2-3-4-로 출력하는 바람에 틀렸다.

#include <iostream>
#include <string>

using namespace std;

int main()
{
	int n;
	string s;

	cin >> n >> s;

	for (int j = 0; j < 2 * n + 3; j++)  // n * 2 + 3만큼의 세로줄이 필요하다.
	{
		for (int i = 0; i < s.size(); i++)  // 우선은 입력받은 string만큼 출력한다
		{
			if (j == 0)  //첫번째 가로줄
			{
				switch (s[i])
				{
				case '0':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '1':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '2':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '3':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '4':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '5':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '6':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '7':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '8':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '9':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				}
			}
			else if (j <= n)  //첫번째 세로줄
			{
				switch (s[i])
				{
				case '0':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '1':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '2':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '3':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '4':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '5':
					cout << "|";
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					break;
				case '6':
					cout << "|";
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					break;
				case '7':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '8':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '9':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				}
			}
			else if (j == n + 1)  //두번째 가로줄
			{
				switch (s[i])
				{
				case '0':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '1':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '2':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '3':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '4':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '5':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '6':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '7':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '8':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '9':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				}
			}
			else if (j <= 2 * n + 1) //두번째 세로줄
			{
				switch (s[i])
				{
				case '0':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '1':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '2':
					cout << "|";
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					break;
				case '3':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '4':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '5':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '6':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '7':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '8':
					cout << "|";
					for (int k = 0; k < n; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				case '9':
					for (int k = 0; k < n + 1; k++)
					{
						cout << " ";
					}
					cout << "|";
					break;
				}
			}
			else //마지막 가로줄
			{
				switch (s[i])
				{
				case '0':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '1':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '2':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '3':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '4':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '5':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '6':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '7':
					for (int k = 0; k < n + 2; k++)
					{
						cout << " ";
					}
					break;
				case '8':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				case '9':
					cout << " ";
					for (int k = 0; k < n; k++)
					{
						cout << "-";
					}
					cout << " ";
					break;
				}
			}
      cout << " ";  // 숫자 사이의 공백
		}
		cout << "\n";  //개행
	}

	return 0;
}