※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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
'BOJ' 카테고리의 다른 글
[BOJ 14601 // C++] 샤워실 바닥 깔기 (Large) (0) | 2023.04.16 |
---|---|
[BOJ 2250 // C++] 트리의 높이와 너비 (0) | 2023.04.15 |
[BOJ 9095 // C++] 1, 2, 3 더하기 (0) | 2023.04.13 |
[BOJ 15490 // C++] 즐거운 게임 (0) | 2023.04.12 |
[BOJ 7580 // C++] Team Selection (1) | 2023.04.11 |