https://www.acmicpc.net/problem/14503
14503번: 로봇 청소기
로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어
www.acmicpc.net
# 북동남서 이동 설정
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def dfs(x, y, d):
global count
if room[x][y] == 0:
room[x][y] = 2
count += 1
# 방향에 맞게 이동 시켜준다
for _ in range(4):
nd = (d + 3) % 4
nx = x + dx[nd]
ny = y + dy[nd]
if room[nx][ny] == 0:
dfs(nx, ny, nd)
return
d = nd
nd = (d + 2) % 4
nx = x + dx[nd]
ny = y + dy[nd]
if room[nx][ny] == 1:
return
dfs(nx, ny, d)
n, m = map(int, input().split())
r, c, d = map(int, input().split())
room = []
for _ in range(n):
room.append(list(map(int, input().split())))
count = 0
dfs(r, c, d)
print(count)
이문제 절반은 풀었는데
안풀려서 다른분꺼 참고했다.
역시 코딩 잘하는 사람은 너무 많다
여기서 제일 충격 먹은점
https://chldkato.tistory.com/157
백준 14503 로봇 청소기 (파이썬)
https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타
chldkato.tistory.com
방향과 함께 진행을 같이 고려하는 법
항상 그냥 dfs를 풀때는 방향을 고려하는 문제는 본적 없던거 같은데 여기서 찾았다.
굿
더 실력을 늘리자
반응형
'코딩 > 파이썬(python)' 카테고리의 다른 글
[백준] 13458번 시험 감독 - 파이썬 (0) | 2022.03.25 |
---|---|
빠르게 입력받기 import sys -파이썬 (0) | 2022.02.06 |
[백준] 11054번 가장 긴 바이토닉 부분 수열 - 파이썬 (0) | 2021.08.05 |
파이썬 가상환경 구성하기 (0) | 2021.07.08 |
filter (0) | 2021.06.09 |