※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 2799번 문제인 블라인드이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/2799 

 

2799번: 블라인드

첫째 줄에 M과 N이 공백으로 구분해서 주어진다. (1 ≤ M, N ≤ 100) 다음 줄에는 현재 건너편 아파트의 상태가 주어진다. 모든 창문은 문제 설명에 나온 것 처럼 4*4 그리드로 주어진다. 또, 창문과

www.acmicpc.net

위에서 r번째, 왼쪽에서 c번째 창문의 좌상단은 5r+1행 5c+1열의 칸과 같다. (단, 0-based index이다.) 이 값을 각 모든 창문에 대하여 블라인드 타입을 조사하고 문제를 해결하자.

 

블라인드 타입을 조사할 때 창문의 모든 칸을 조사할 필요 없이 창문의 각 행마다 한 칸씩만을 확인해도 아래와 같이 모든 타입을 구분할 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int R, C;
string board[501];
int ans[5];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	cin >> R >> C;
	R = R * 5 + 1, C = C * 5 + 1;

	for (int r = 0; r < R; r++) cin >> board[r];
	for (int r = 1; r < R; r += 5) {
		for (int c = 1; c < C; c += 5) {
			int cnt = 0;
			for (int k = 0; k < 4; k++) {
				if (board[r + k][c] == '*') cnt++;
			}
			ans[cnt]++;
		}
	}

	for (int k = 0; k < 5; k++) cout << ans[k] << ' ';
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 8322 // C++] (K,N)-나이트  (1) 2024.01.08
[BOJ 9471 // C++] 피사노 주기  (0) 2024.01.07
[BOJ 2737 // C++] 연속 합  (1) 2024.01.05
[BOJ 7117 // C++] Sevens, twos and zeros  (0) 2024.01.04
[BOJ 1750 // C++] 서로소의 개수  (1) 2024.01.03

+ Recent posts