문제풀이/BOJ

[Python] BOJ/백준 1652번 누울 자리를 찾아라

서채리 2021. 7. 11. 17:22

[문제]

https://www.acmicpc.net/problem/1652

 

1652번: 누울 자리를 찾아라

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

www.acmicpc.net

 


[풀이]

방의 마지막이 'X'(벽)이여야 row_cnt와 col_cnt가 2 이상일 경우 누울 자리에 1을 더하기 때문에 입력받은 문자열에서 맨 오른쪽열과 맨 아래쪽행을 'X'로 패딩해주었다.

 


[코드]

if __name__ == '__main__':
    n = int(input())
    room = []
    for _ in range(n):
        room += [input() + 'X']
    room.append('X' * (n+1))
    
    row_seat, col_seat = 0, 0
    for i in range(n + 1):
        row_cnt, col_cnt = 0, 0
        for j in range(n + 1):
            # 가로
            if room[i][j] == '.':
                row_cnt += 1
            elif room[i][j] == 'X':
                if row_cnt >= 2:
                    row_seat += 1
                row_cnt = 0
            # 세로
            if room[j][i] == '.':
                col_cnt += 1
            elif room[j][i] == 'X':
                if col_cnt >= 2:
                    col_seat += 1
                col_cnt = 0
    print(row_seat, col_seat)