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

 

이번에 볼 문제는 백준 1652번 문제인 누울 자리를 찾아라이다.
문제는 아래 링크를 확인하자.

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

 

1652번: 누울 자리를 찾아라

첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.

www.acmicpc.net

각 행과 열을 한 번씩 둘러보면서, 연속으로 빈 칸이 나열된 구간이 방향별로 몇 개 있는지를 세는 문제이다.

 

빈 칸이 아무리 한 방향으로 많이 붙어나오더라도 그 붙어있는 구간은 전부 한 구간으로 센다는 점에 유의하자.

 

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

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

string field[100];

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

	int N; cin >> N;
	for (int i = 0; i < N; i++) cin >> field[i];

	int ans1 = 0;
	for (int i = 0; i < N; i++) {
		bool chk = 0;
		for (int j = 0; j < N - 1; j++) {
			if ((!chk) && field[i][j] == '.' && field[i][j + 1] == '.') {
				ans1++;
				chk = 1;
			}
			else if (field[i][j] == 'X') chk = 0;
		}
	}

	int ans2 = 0;
	for (int j = 0; j < N; j++) {
		bool chk = 0;
		for (int i = 0; i < N - 1; i++) {
			if ((!chk) && field[i][j] == '.' && field[i + 1][j] == '.') {
				ans2++;
				chk = 1;
			}
			else if (field[i][j] == 'X') chk = 0;
		}
	}

	cout << ans1 << ' ' << ans2;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 24447 // C++] 알고리즘 수업 - 너비 우선 탐색 4  (0) 2023.02.15
[BOJ 27475 // C++] Cancel the Trains  (0) 2023.02.15
[BOJ 9773 // C++] ID Key  (0) 2023.02.14
[BOJ 9782 // C++] Median  (0) 2023.02.14
[BOJ 9783 // C++] Easy Encryption  (0) 2023.02.14

+ Recent posts