[실버 4] 백준 18242 - 네모네모 시력검사 (파이썬)
글 작성자: pental
https://www.acmicpc.net/problem/18242
풀이
- #으로 구성된 직사각형 모양에서 하나의 칸만 .으로 뚫려 있음.
- 이 구멍이 어느 방향에 뚫려 있는지 출력해야 함: UP, DOWN, LEFT, RIGHT
min_y, max_y, min_x, max_x = 1e9, 0, 1e9, 0
for i in range(N):
for j in range(M):
if B[i][j] == '#':
min_y = min(min_y, i)
max_y = max(max_y, i)
min_x = min(min_x, j)
max_x = max(max_x, j)
“#”의 좌표 중 가장 위, 아래, 왼쪽, 오른쪽을 찾아 네모의 범위를 확인한다.
center_y, center_x = (min_y + max_y) // 2, (min_x + max_x) // 2
문제에서는 각 변의 중간 부분이 뚫려있다고 하였기에, 중심좌표를 계산한다.
이 좌표 기준으로 방향 탐색을 진행 할 것이다.
if B[min_y][center_x] == '.':
print("UP")
elif B[max_y][center_x] == '.':
print("DOWN")
elif B[center_y][min_x] == '.':
print("LEFT")
else:
print("RIGHT")
직사각형 테두리 중앙에 있는 좌표 중 하나가 “,”이면 그 방향이 구멍이다.
코드
# 백준 18242 - 네모네모 시력검사
# 분류 : 구현
N, M = map(int, input().split())
B = [input() for _ in range(N)]
min_y, max_y, min_x, max_x = 1e9, 0, 1e9, 0
for i in range(N) :
for j in range(M) :
if B[i][j] == '#' :
min_y = min(min_y, i)
max_y = max(max_y, i)
min_x = min(min_x, j)
max_x = max(max_x, j)
center_y, center_x = (min_y + max_y) // 2, (min_x + max_x) // 2
if B[min_y][center_x] == '.' :
print("UP")
elif B[max_y][center_x] == '.' :
print("DOWN")
elif B[center_y][min_x] == '.' :
print("LEFT")
else :
print("RIGHT")
'Programming > 백준' 카테고리의 다른 글
[골드 5] 백준 1419 - 등차수열의 합 (파이썬) (0) | 2025.05.07 |
---|---|
[실버 3] 백준 25418 - 정수 a를 k로 만들기 (파이썬) (0) | 2025.05.06 |
[골드 5] 백준 10710 - 실크로드 (파이썬) (0) | 2025.05.05 |
[브론즈 1] 백준 10041 - 관광 (파이썬) (0) | 2025.05.04 |
[브론즈 2] 백준 10040 - 투표 (파이썬) (0) | 2025.05.04 |
댓글
이 글 공유하기
다른 글
-
[골드 5] 백준 1419 - 등차수열의 합 (파이썬)
[골드 5] 백준 1419 - 등차수열의 합 (파이썬)
12:51:03 -
[실버 3] 백준 25418 - 정수 a를 k로 만들기 (파이썬)
[실버 3] 백준 25418 - 정수 a를 k로 만들기 (파이썬)
2025.05.06 -
[골드 5] 백준 10710 - 실크로드 (파이썬)
[골드 5] 백준 10710 - 실크로드 (파이썬)
2025.05.05 -
[브론즈 1] 백준 10041 - 관광 (파이썬)
[브론즈 1] 백준 10041 - 관광 (파이썬)
2025.05.04