백준 1652번: 누울 자리를 찾아라 (C++)
2023. 1. 18. 16:20ㆍ알고리즘/구현
https://www.acmicpc.net/problem/1652
1652번: 누울 자리를 찾아라
첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다.
www.acmicpc.net
풀이
최대 시간복잡도가 100*100이어서 완전 탐색으로 진행했다.
우선, ver, hor 변수를 선언해서 빈 공간일 때 카운트를 했다.
그리고 ' X ' 를 만나거나 끝 부분에 도착했을 때 ver, hor가 2보다 크다면 누울 공간이 나온다는 뜻이므로
ver_cnt 와 hor_cnt 에 1씩 더해주고 ver, hor를 0으로 초기화해주었다.
가로와 세로는 i 와 j를 바꿔 이중 for문으로 한번에 진행시켰다.
전체 코드
#include <iostream>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
int N;
int condo[101][101] = { 0, };
int hor_cnt = 0;
int ver_cnt = 0;
cin >> N;
for (int i = 0; i < N; i++) {
string s;
cin >> s;
for (int j = 0; j < N; j++) condo[i][j] = s[j];
}
for (int i = 0; i < N; i++) {
int hor = 0;
int ver = 0;
for (int j = 0; j < N; j++) {
if (condo[i][j] != 'X') hor++;
if (condo[i][j] == 'X' || j == N - 1) {
if (hor >= 2) hor_cnt++;
hor = 0;
}
if (condo[j][i] != 'X') ver++;
if (condo[j][i] == 'X' || j == N - 1) {
if (ver >= 2) ver_cnt++;
ver = 0;
}
}
}
cout << hor_cnt << ' ' << ver_cnt;
}
'알고리즘 > 구현' 카테고리의 다른 글
백준 5212번: 지구 온난화 (C++) (0) | 2023.02.22 |
---|---|
백준 9047번: 6174 (C++) (0) | 2023.02.17 |
백준 2920번: 음계 (C++) (0) | 2023.01.26 |
백준 17128번: 소가 정보섬에 올라온 이유 (C++) (0) | 2023.01.21 |
백준 1292번: 쉽게 푸는 문제 (C++) (0) | 2023.01.18 |