티스토리 뷰

백준

BOJ]3035번_스캐너

Pican 2019. 6. 3. 22:49

문제:상근이는 매일 아침 영자 신문을 학교에 가져와서 읽는다. 하지만, 상근이의 눈은 점점 나빠졌고, 더 이상 아침 신문을 읽을 수 없는 상황에 이르렀다. 상근이는 스캐너를 이용해서 글자를 확대한 다음에 보려고 한다.

신문 기사는 글자로 이루어진 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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함