※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |