티스토리 뷰
문제:상근이는 매일 아침 영자 신문을 학교에 가져와서 읽는다. 하지만, 상근이의 눈은 점점 나빠졌고, 더 이상 아침 신문을 읽을 수 없는 상황에 이르렀다. 상근이는 스캐너를 이용해서 글자를 확대한 다음에 보려고 한다.
신문 기사는 글자로 이루어진 R*C 행렬로 나타낼 수 있다. 글자는 알파벳과 숫자, 그리고 마침표로 이루어져 있다.
스캐너는 ZR과 ZC를 입력으로 받는다. 이렇게 되면, 스캐너는 1*1크기였던 각 문자를 ZR*ZC크기로 확대해서 출력해 준다.
신문 기사와 ZR, ZC가 주어졌을 때, 스캐너의 스캔을 거친 결과를 구하는 프로그램을 작성하시오.
풀이:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int main()
{
int R, C, ZR, ZC;
char a[50][50];
scanf("%d %d %d %d", &R, &C, &ZR, &ZC);
for (int i = 0; i < R; ++i) {
scanf("%s", a[i]);
}
for (int i = 0; i < R; ++i) {
for (int j = 0; j < ZR; ++j, puts("")) {
for (int k = 0; k < C; ++k) {
for (int t = 0; t < ZC; ++t) {
printf("%c", a[i][k]);
}
}
}
}
}
|
cs |
먼저 풀기 전, 스캐너의 작동원리에 대하여 알고넘어가야합니다.
스캐너는 R C ZR ZC를 받아서 R * ZR, C * ZC만큼 출력합니다.
그러므로 코드또한 R,C,ZR,ZC가 모두 들어가서 배수만큼 출력 할 수 있게 반복문으로 만들어야 하는데.
4개의 값인 만큼 4중반복문으로 돌려야 원하는 값이 나옵니다.
반복문에서는 먼저 행인 R을 가장 바깥에 돌리고 바로 밑에서 ZR값만큼 넣어서 R * ZR을 구현 후 puts("") (줄바꿈)
해준 후 C와 ZC값으로 열인 C의 값을 확대해서 출력해줍니다.
코드가 많이 복잡하지만 스캐너의 작동원리를 이해하고 넘어간다면 4중 반복문의 형태를 이해하고 코드를 짤 수 있을 것입니다.
'백준' 카테고리의 다른 글
BOJ]14487번_욱제는 효도쟁이야!! (0) | 2019.06.04 |
---|---|
BOJ]14647번_준오는 조류혐오야!! (0) | 2019.06.04 |
BOJ]3034번_앵그리 창영 (0) | 2019.06.01 |
BOJ]14726번_신용카드 판별 (0) | 2019.05.28 |
BOJ]2864번_5와 6의 차이 (1) | 2019.05.27 |
댓글