알고리즘 모음(C++)

백준 1652 - 누울 자리를 찾아라(C++) 본문

백준

백준 1652 - 누울 자리를 찾아라(C++)

공대생의 잡다한 사전 2023. 6. 4. 00:18

문제 링크입니다. https://www.acmicpc.net/problem/1652

 

1652번: 누울 자리를 찾아라

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

www.acmicpc.net

가로 혹은 세로로 누울 자리를 찾는 문제입니다.

 

누울 자리는 항상 2칸 이상이여야 하며, 끝에는 짐이나 벽에 닿아야합니다.

 

 

자세한 것은 코드를 참고해주세요

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <cstring>
#include <cmath>

using namespace std;

int N;
char map[111][111];
int row, col;

void find_row(){
    for(int i = 1; i <= N; i++){
        int Can = 0;
        for(int j = 1; j <= N; j++){
            if(map[i][j] == '.') Can++;
            if(map[i][j] == 'X') {
                if(Can >= 2)  row++;
                Can = 0;
            }
        }
        if(Can >= 2) row++; 
    }
}

void find_col(){
    for(int i = 1; i <= N; i++){
        int Can = 0;
        for(int j = 1; j <= N; j++){
            if(map[j][i] == '.') Can++;
            if(map[j][i] == 'X'){
                if(Can >= 2) col++;
                Can = 0;
            }
        }
        if(Can >= 2) col++;
    }
}


void solve(){
    find_row();
    find_col();
    cout << row << " " << col;
}

int main(){
    cin.tie(0);
    cout.tie(0);
    cin >> N;
    for(int i = 1; i <= N; i++){
        for(int j = 1; j <= N; j++){
            cin >> map[i][j];
        }
    }
    solve();
    return 0;
}

 

 

질문 및 조언은 댓글을 참고해주세요

'백준' 카테고리의 다른 글

백준 1919 - 애너그램 만들기(C++)  (0) 2023.06.09
백준 5218 - 알파벳 거리(C++)  (2) 2023.06.09
백준 1225 - 이상한 곱셈(C++)  (0) 2023.06.03
백준 1969 - DNA(C++)  (0) 2023.06.03
백준 1371 - 가장 많은 글자(C++)  (0) 2023.06.03