2344 : 거울

풀이

매일 가슴이 갈라져요
숨이 다 끊어질만큼 울어요
수 천 번 잊었다 외쳐봐도
내 삶은 어느새 벼랑 끝에 서있네요

코드

#include <cstdio>
#include <cstring>
#define R(N) for(int i=1;i<=N;i++)

int n, m, a[1002][1002], num[1002][1002], res[4004];

void go(int x, int y, int s, int d, int cnt) {
    int dx[] = { -1*s,0 }, dy[] = { 0,+1*s };
    while (a[x][y] != -1) {
        if (a[x][y] == 1) d = (d+1)%2;
        x += dx[d], y += dy[d];
    }
    res[cnt] = num[x][y];
}

int main() {
    scanf("%d %d", &n, &m);
    memset(a, -1, sizeof(a));
    R(n) for (int j = 1; j <= m; j++) {
        scanf("%d", &a[i][j]);
    }

    R(n) {
        num[i][0] = i;
        num[n-i+1][m+1] = i+n+m;
    }
    R(m) {
        num[n+1][i] = i+n;
        num[0][m-i+1] = i+n+m+n;
    }

    R(n) {
        go(i, 1, 1, 1, num[i][0]);
        go(i, m, -1, 1, num[i][m+1]);
    }
    R(m) {
        go(n, i, 1, 0, num[n+1][i]);
        go(1, i, -1, 0, num[0][i]);
    }

    R((n+m)*2) {
        printf("%d ", res[i]);
    }

    return 0;
}

아무말

백준, 백준 온라인 저지, BOJ, Baekjoon Online Judge, C, C++, 씨, 씨쁠쁠, JAVA, algorithm, 자바, 알고리즘, 자료구조, 문제, 문제 풀이, 풀이

wookje.kwon's profile image

wookje.kwon

2018-08-30 22:24

Read more posts by this author