반응형
[ Contents ]
1. 문제 (링크 참조)
2. 문제 풀이
2칸 길이의 가로 혹은 세로로 누울 자리를 구하는 문제입니다. 다만 문제 설명이 조금 모호하게 되어있고, 예제도 1개 밖에 없어서 문제 이해가 가장 어렵습니다...
1) 연속된 빈 칸(.)이 2개 이상 있어야 하고
2) 벽의 끝 또는 짐(X)에 닿아야 합니다.
2가지 조건을 모두 만족해야 자리 하나입니다. 따라서 .의 개수를 세다가 X 또는 벽을 만나면 자리 1개로 세시면 됩니다.
3. 코드
import sys
input = sys.stdin.readline
#입력
N = int(input())
room = [] #방 구조 저장
row = 0 #가로
col = 0 #세로
for c in range(N):
tmp = input().rstrip()
cnt = 0 # .개수
for i in tmp:
if i == '.':
cnt += 1
#X를 만났을 때, 앞서 .이 2개 이상이었으면 자리 추가
elif i == 'X':
if cnt >= 2:
row += 1
cnt = 0
#..이상임에도 벽을 만나지 못한채 끝났으면 자리 추가
if cnt >= 2:
row += 1
room.append(tmp)
방의 구조를 한 줄씩 입력받으면서 가로 자리를 계산합니다.
연속된 빈 칸(.)이 2개 이상이고, 짐(X)을 만나면 자리를 1개 추가합니다. 특히 마지막이 X으로 끝나지 않을 경우도 있으므로 끝에 빈 칸(.)이 2개 이상이면 자리를 1개 추가해줍니다.
예를 들어 ...X...이면 자리는 2개입니다.
#세로로 누울자리 찾기
for i in range(N):
cnt = 0 # .개수
for j in range(N):
if room[j][i] == '.':
cnt += 1
# X를 만났을 때, 앞서 .이 2개 이상이었으면 자리 추가
elif room[j][i] == 'X':
if cnt >= 2:
col += 1
cnt = 0
# ..이상임에도 벽을 만나지 못한채 끝났으면 자리 추가
if cnt >= 2:
col += 1
#출력
print(row, col)
가로와 마찬가지로 세로도 계산해줍니다.
반응형
'Algorithm' 카테고리의 다른 글
[수학/DP] 백준 2407 조합 - 파이썬(Python) (0) | 2022.03.11 |
---|---|
[탐색/BFS] 백준 10026 적록색약 - 파이썬(Python) (0) | 2022.03.10 |
[구현/문자열] 백준 5598 카이사르 암호 - 파이썬(Python) (0) | 2022.03.08 |
[분할정복/DQ] 백준 1992 쿼드트리 - 파이썬(Python) (0) | 2022.03.07 |
[구현/문자열] 백준 2857 FBI - 파이썬(Python) (0) | 2022.03.06 |
댓글