728x90

www.acmicpc.net/problem/1652

 

1652번: 누울 자리를 찾아라

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

www.acmicpc.net

n = int(input())
l = [[] for _ in range(n)]

for i in range(n):
    inp = input()
    for j in inp:
        l[i].append(j)
        
l_rot = [['' for _ in range(n)] for _ in range(n)]
for i in range(n):
    for j in range(n):
        l_rot[j][n-1-i]=l[i][j]  # 90도 회전 행렬 (세로도 가로처럼)

row, col = 0, 0 
for i in range(n):
    r = -1
    for j in range(n):
        if l[i] == ['.', '.', '.', '.', '.']:  # 한 줄이 다 비었으면 + 1
            row += 1 
            r = n
            break
        if l[i][j] == 'X':    # (현재 X 인곳의 col - 이전 X 인 col) > 2 이면 + 1 
            if j - r > 2:
                row += 1
            r = j
            
    if n - 1 - r >= 2:     # (벽(n-1) - 마지막 X 인곳의 col) == 2 이면 + 1
        row += 1
        
for i in range(n):
    c = -1
    for j in range(n):
        if l_rot[i] == ['.', '.', '.', '.', '.']:
            col += 1
            c = n
            break
        if l_rot[i][j] == 'X':
            if j - c > 2:
                col += 1
            c = j
            
    if n - 1 - c >= 2:
        col += 1       
print(row, col)

반응형

'전.py' 카테고리의 다른 글

백준 2669 직사각형 네개의 합집합의 면적 구하기  (0) 2020.12.13
백준 6603 로또  (0) 2020.12.12
백준 2667 단지번호붙이기 (실패)  (0) 2020.12.12
백준 2605 줄 세우기  (0) 2020.12.12
백준 2606 바이러스  (0) 2020.12.12
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기