문제 링크 : www.acmicpc.net/problem/2290
문제 풀이는 다음과 같다.
1. 숫자 8을 LCD모니터에 출력해보자. 위의 그림과 같이, 숫자 8의 경우 0번째 ~ 6번째의 모든 자리들에 'ㅣ' 혹은 '-' 값이 출력된다.
2. 이를 기준으로 숫자 0~9까지의 모든 숫자들이 필요한 출력값들을 아래와 같이 저장해준다.
int temp[10][7] = {
{1,1,1,0,1,1,1}, //0
{0,0,1,0,0,1,0}, //1
{1,0,1,1,1,0,1}, //2
{1,0,1,1,0,1,1}, //3
{0,1,1,1,0,1,0}, //4
{1,1,0,1,0,1,1}, //5
{1,1,0,1,1,1,1}, //6
{1,0,1,0,0,1,0}, //7
{1,1,1,1,1,1,1}, //8
{1,1,1,1,0,1,1}, //9
};
숫자 1의 경우 0~6번째 중 해당 자리가 공백이 아닌 값이 들어가있음을 의미한다.
3. 저장한 위치값들을 기반으로 각 줄마다 'ㅣ', '-', 혹은 공백 ' '을 출력해준다.
이때 주의할 점이, 결국 출력은 한 줄을 기준으로 출력될 수 밖에 없다는 것이다.
이 점을 유의하면서 '\n'과 공백 ' '을 적절히 위치시켜야한다.
#include <iostream>
using namespace std;
int s = 0;
string n = "";
int temp[10][7] = {
{1,1,1,0,1,1,1}, //0
{0,0,1,0,0,1,0}, //1
{1,0,1,1,1,0,1}, //2
{1,0,1,1,0,1,1}, //3
{0,1,1,1,0,1,0}, //4
{1,1,0,1,0,1,1}, //5
{1,1,0,1,1,1,1}, //6
{1,0,1,0,0,1,0}, //7
{1,1,1,1,1,1,1}, //8
{1,1,1,1,0,1,1}, //9
};
void monitor(char c, int idx){ //찍히는 숫자, 0~6사이 위치
int x = c-'0';
if(idx%3==0){
cout << " ";
if(temp[x][idx]==1){for(int i=0; i<s; i++) cout << "-"; }
else {for(int i=0; i<s; i++) cout << " "; }
cout << " ";
}
else{
if(temp[x][idx]==1){cout << "|";}
else cout << " ";
if(idx%3==1) {for(int i=0; i<s; i++) cout << " ";}
else cout << " ";
}
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> s >> n;
for(int j=0; j<n.size(); j++){ // 0
monitor(n[j],0); // 찍히는 숫자, 0~6사이 위치
}
cout << "\n";
for(int a=0; a<s; a++){
for(int j=0; j<n.size(); j++){ // 1~2
for(int i=1; i<3; i++){
monitor(n[j],i); // 찍히는 숫자, 0~6사이 위치
}
}
cout << "\n";
}
for(int j=0; j<n.size(); j++){ // 3
monitor(n[j],3); // 찍히는 숫자, 0~6사이 위치
}
cout << "\n";
for(int a=0; a<s; a++){
for(int j=0; j<n.size(); j++){ // 4~5
for(int i=4; i<6; i++){
monitor(n[j],i); // 찍히는 숫자, 0~6사이 위치
}
}
cout << "\n";
}
for(int j=0; j<n.size(); j++){ // 6
monitor(n[j],6); // 찍히는 숫자, 0~6사이 위치
}
cout << "\n";
return 0;
}
'🖥️ CS > Baekjoon Algorithms' 카테고리의 다른 글
백준 16234번 인구이동 (C++) (0) | 2021.05.02 |
---|---|
백준 2217번 로프 (C++) (0) | 2021.04.30 |
백준 15685번 드래곤커브 (C++) (0) | 2021.04.28 |
백준 14890번 경사로 (C++) (0) | 2021.04.27 |
백준 14503번 로봇 청소기 (C++) (0) | 2021.04.26 |