본문 바로가기
Algorithm/BOJ

[백준/BOJ] 2799번 - 블라인드 (C++)

by shine-jung 2022. 3. 23.
반응형

문제 링크


코드

#include <bits/stdc++.h>
using namespace std;

char p[501][501];
int cnt[5];
int main(void) {
    ios::sync_with_stdio(0);
    cin.tie(0);
    int m, n, i, j;
    cin >> m >> n;
    for (i = 0; i < 5 * m + 1; i++)
        for (j = 0; j < 5 * n + 1; j++)
            cin >> p[j][i];
    for (i = 0; i < m; i++) {
        for (j = 0; j < n; j++) {
            if (p[5 * j + 1][5 * i + 4] == '*') cnt[4]++;
            else if (p[5 * j + 1][5 * i + 3] == '*') cnt[3]++;
            else if (p[5 * j + 1][5 * i + 2] == '*') cnt[2]++;
            else if (p[5 * j + 1][5 * i + 1] == '*') cnt[1]++;
            else cnt[0]++;
        }
    }
    for (i = 0; i < 5; i++)
        cout << cnt[i] << ' ';
}



설명

M과 N을 입력 받는다.
그림을 이중 배열로 입력 받아보자.
이중 반복문을 통해 창문 하나하나를 판별해보자.
	5M+1, 5N+4 위치의 문자가 *이면 5번째 창문이다.
	위의 경우가 아니고, 5M+1, 5N+3 위치의 문자가 *이면 4번째 창문이다.
	위의 경우가 아니고, 5M+1, 5N+2 위치의 문자가 *이면 3번째 창문이다.
	위의 경우가 아니고, 5M+1, 5N+1 위치의 문자가 *이면 2번째 창문이다.
	위의 경우가 모두 아니면 1번째 창문이다.
	각각의 창문을 count한다.
5개 창문 count를 각각 출력한다.

행과 열을 반대로 생각해서 좀 헤맸다. 😭




(주의) 기록용으로 작성한 글입니다. 좋은 코드가 아닐 수 있습니다.

댓글 환영합니다!


반응형

댓글