1652번: 누울 자리를 찾아라 (acmicpc.net)
1652번: 누울 자리를 찾아라
첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.
www.acmicpc.net
※문제조건
똑바로 연속해서 2칸 이상의 빈 칸이 존재하면 몸을 누울 수 있다
누울 때는 무조건 벽이나 짐에 닿아야한다.
가로로 누울수도 있고 세로로 누울 수도 있다.
두번째 조건에 의하여 한 줄이 통째로 비어있더라도 누울수 있는 자리는 1개이다.
그리고 그림의 두번째 줄과 같이 중간에 짐이 있더라도 앞 뒤로 2칸 이상의 빈 칸이 있으니 카운트를 올려주어야 한다.
따라서 빈칸을 세는 변수n을 선언 해놓고 n이 2가 될때만 출력값을 증가시킨다.
한 줄 씩 검사하다가 X를 만나면 n을 0으로 초기화 해준다.
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int N; cin >> N;
char** mat = new char* [N];
for (int i = 0; i < N; i++) {
mat[i] = new char[N];
for (int j = 0; j < N; j++) cin >> mat[i][j];
}
int result = 0;
for (int i = 0; i < N; i++) {
int n = 0;
for (int j = 0; j < N; j++) {
if (mat[i][j] == 'X') n = 0;
else {
n++;
if (n == 2) result++;
}
}
}
cout << result << " ";
result = 0;
for (int j = 0; j < N; j++) {
int n = 0;
for (int i = 0; i < N; i++) {
if (mat[i][j] == 'X') n = 0;
else {
n++;
if (n == 2) result++;
}
}
}
cout << result;
return 0;
}
'CodingTest > 백준' 카테고리의 다른 글
[c++] 백준 - 25206: 너의 평점은 (1) | 2023.05.16 |
---|---|
[c++] 백준 - 1316: 그룹 단어 체커 (0) | 2023.05.16 |
[c++] 백준 - 10812번: 바구니 순서 바꾸기 (0) | 2023.05.10 |
[c++] 백준 - 1157번: 단어 공부 (0) | 2023.05.10 |
[c++] 백준 - 2908번: 상수 (0) | 2023.05.02 |