16113 : 시그널

풀이

잘 짜면 된다

코드

#include <cstdio>
#include <cstring>

int n, r[100003];
char a[100003], s[20005][5];

int isone(int x) {
    for (int i = 0; i < 5; i++)
        if (s[x][i] == '.' || s[x+1][i] == '#') return 0;
    return 1;
}

int count(int x) {
    int ret = 0;
    for (int i = x; i < x+3; i++)
        for (int j = 0; j < 5; j++)
            ret += s[i][j] == '.';
    return ret;
}

int main() {
    scanf("%d %s", &n, a);
    for (int i = 0; i < n; i++) {
        s[i%(n/5)][i/(n/5)] = a[i];
    }

    int cnt = 0;
    for (int i = 0; i < n / 5; i++) {
        if (s[i][0] == '.') continue;
        if (isone(i)) {
            r[cnt++] = 1, i++;
            continue;
        }
        int ret = count(i);
        switch (ret) {
        case 2:
            r[cnt] = 8;
            break;
        case 3:
            if (s[i+2][1] == '.') r[cnt] = 6;
            else if (s[i][3] == '.') r[cnt] = 9;
            else r[cnt] = 0;
            break;
        case 4:
            if (s[i+2][1] == '.') r[cnt] = 5;
            else if (s[i][3] == '.') r[cnt] = 3;
            else r[cnt] = 2;
            break;
        case 6:
            r[cnt] = 4;
            break;
        case 8:
            r[cnt] = 7;
        }
        cnt++, i+=2;
    }

    for (int i = 0; i < cnt; i++) {
        printf("%d", r[i]);
    }

    return 0;
}

아무말

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

wookje.kwon's profile image

wookje.kwon

2018-09-14 18:07

Read more posts by this author