728x90
https://www.acmicpc.net/problem/1652
1652번: 누울 자리를 찾아라
첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.
www.acmicpc.net
분명 쉬운 문제인데 반례 혹은 숨겨진 조건을 찾는 게 너무너무 ㄹ어렵다.... 흑흑...
이거 하나때문에 시간을 얼마나 쓰는 건지 열받아 죽을 거 같다
가로 세로 따로 구하면 되는데, 이게 진짜 열받는 게 뭐냐면 예제에서는 보이지 않는 조건들이 날 괴롭힌다..
하지만.. 열심히 혼자 잘 찾아야 한다. 아직까진 질문 검색 카테고리에서 도움을 받고 있는데 언제까지고 할 수 없는 노릇이라.. 하~
여기서 못 봤던 문제는 바로 한 줄에 자리가 하나만 생기지 않는다는 것이다.. X에 가로막혔지만 양쪽으로 자리가 생길 수 있다.
그러므로 X로 막혔다고 해서 고집으로 break 해서 for문 나가서 바로 다음으로 넘어가는 실수를 하지 말아야 한다
(난 했다ㅋ.. 나대지 말고 그냥 할걸)
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main(){
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int n, rowCnt = 0, colCnt = 0;
char arr[101][101];
cin >> n;
for(int i=0; i<n; i++) for(int j=0; j<n; j++) cin >> arr[i][j];
//가로
for(int i=0; i<n; i++){
int cnt = 0;
for(int j=0; j<n; j++){
if(arr[i][j] == '.'){
cnt++;
}else{
if(cnt >= 2) rowCnt++;
cnt = 0;
}
}
if(cnt >= 2) rowCnt++;
}
//세로
for(int i=0; i<n; i++){
int cnt = 0;
for(int j=0; j<n; j++){
if(arr[j][i] == '.'){
cnt++;
}else{
if(cnt >= 2) colCnt++;
cnt = 0;
}
}
if(cnt >= 2) colCnt++;
}
cout << rowCnt << ' ' << colCnt << '\n';
return 0;
}
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준/c++] 8979번: 올림픽 (0) | 2022.07.23 |
---|---|
[백준/c++] 2621번: 카드게임 (0) | 2022.07.23 |
[백준/c++] 16439번: 치킨치킨치킨 (0) | 2022.07.22 |
[백준/c++] 17609번: 회문 (0) | 2022.07.19 |
[백준/c++] 17413번: 단어 뒤집기 2 (0) | 2022.07.19 |