※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 2290번 문제인 LCD Test이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/2290 

 

2290번: LCD Test

첫째 줄에 두 개의 정수 s와 n이 들어온다. (1 ≤ s ≤ 10, 0 ≤ n ≤ 9,999,999,999)이다. n은 LCD 모니터에 나타내야 할 수 이며, s는 크기이다.

www.acmicpc.net

문제의 예제와 같이, 주어지는 정수를 한 세그먼트의 길이가 s인 7세그먼트 디스플레이와 같이 표기해주는 문제이다.

 

0부터 9까지의 s가 1인 기본형을 미리 입력해두고, 주어지는 정수를 한 자리마다 바꿔 문제를 해결하자.

 

출력할 문자열들의 배열을 미리 만들고, 각 정수변환을 출력할 문자열들 뒤에 계속 이어붙이는 것으로 문제의 형식대로 출력할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string num[5] = {
" -       -   -       -   -   -   -   -  ",
"| |   |   |   | | | |   |     | | | | | ",
"         -   -   -   -   -       -   -  ",
"| |   | |     |   |   | | |   | | |   | ",
" -       -   -       -   -       -   -  "};

string ans[23];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int len; string s; cin >> len >> s;
	for (auto& l : s) {
		int cur = l - '0';
		
		ans[0] += ' ';
		for (int i = 0; i < len; i++) ans[0] += num[0][cur * 4 + 1];
		ans[0] += ' ';
		ans[0] += ' ';
		
		for (int k = 1; k <= len; k++) {
			ans[k] += num[1][cur * 4];
			for (int i = 0; i < len; i++) ans[k] += num[1][cur * 4 + 1];
			ans[k] += num[1][cur * 4 + 2];
			ans[k] += ' ';
		}

		ans[len + 1] += ' ';
		for (int i = 0; i < len; i++) ans[len + 1] += num[2][cur * 4 + 1];
		ans[len + 1] += ' ';
		ans[len + 1] += ' ';

		for (int k = len + 2; k <= len * 2 + 1; k++) {
			ans[k] += num[3][cur * 4];
			for (int i = 0; i < len; i++) ans[k] += num[3][cur * 4 + 1];
			ans[k] += num[3][cur * 4 + 2];
			ans[k] += ' ';
		}

		ans[len * 2 + 2] += ' ';
		for (int i = 0; i < len; i++) ans[len * 2 + 2] += num[4][cur * 4 + 1];
		ans[len * 2 + 2] += ' ';
		ans[len * 2 + 2] += ' ';
	}

	for (int i = 0; i <= len * 2 + 2; i++) {
		cout << ans[i] << '\n';
	}
}
728x90

+ Recent posts