M,N 짜리 signal이 주어졌을 때 K배만큼 확대해서 출력하는 문제다.



해법


K가 3배면


X.

.X

XXX...

XXX...

XXX...

...XXX

...XXX

...XXX


이렇게 확대된다.


확대된 배열의 좌표와 원래 배열의 좌표의 상관관계를 보면


(0,0) (0,1)

(1,0) (1,1)

(0,0) (0,1) (0,2) (0,3) (0,4) (0,5)

(1,0) (1,1) (1,2) (1,3) (1,4) (1,5)

(2,0) (2,1) (2,2) (2,3) (2,4) (2,5)

(3,0) (3,1) (3,2) (3,3) (3,4) (3,5)

(4,0) (4,1) (4,2) (4,3) (4,4) (4,5)

(5,0) (5,1) (5,2) (5,3) (5,4) (5,5)


인데 잘 살펴보면 (바뀐 후의 좌표)/K == (바뀌기 전의 좌표) 인 것을 알 수 있다.


따라서 i<M*K, j<N*K 를 돌면서 signal[i/K][j/K]를 출력하면 된다.


#include <iostream>
using namespace std;
 
int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int m, n, k;
    char s[10][11];
    cin >> m >> n >> k;
    for (int i = 0; i < m; ++i) cin >> s[i];
    for (int i = 0; i < m*k; ++i) {
        for (int j = 0; j < n*k; ++j) {
            cout << s[i / k][j / k];
        }
        cout << '\n';
    }
    return 0;
}
cs



'BOJ' 카테고리의 다른 글

14468 소가 길을 건너간 이유 2  (0) 2018.11.10
14467 소가 길을 건너간 이유 1  (0) 2018.11.10
14174 Block Game  (0) 2018.11.10
14173 Square Pasture  (0) 2018.11.10
11978 Mowing the Field (Bronze)  (0) 2018.11.10

+ Recent posts