728x90
문제
https://www.acmicpc.net/problem/14503
풀이
문제에서 주어진 대로 구현하였습니다.
※ 현재 방향이 아닌 반시계 방향으로 90º 회전한 위치부터 확인해야 합니다.
코드
파이썬
import sys
input = sys.stdin.readline
def solution(x, y, d):
answer = 0
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
visited = [[False] * M for _ in range(N)]
while True:
if not visited[x][y]:
visited[x][y] = True
answer += 1
flag = False
for i in range(d + 3, d - 1, -1):
nd = i % 4
nx = x + dx[nd]
ny = y + dy[nd]
if board[nx][ny] == 0 and not visited[nx][ny]:
flag = True
x = nx
y = ny
d = nd
break
if not flag:
x -= dx[d]
y -= dy[d]
if board[x][y] == 1:
return answer
N, M = map(int, input().split())
r, c, d = map(int, input().split())
board = []
for _ in range(N):
board.append(list(map(int, input().split())))
print(solution(r, c, d))
728x90
'🚩 코딩테스트 > 알고리즘' 카테고리의 다른 글
[백준] 1525번: 퍼즐 (0) | 2023.03.04 |
---|---|
[백준] 2251번: 물통 (0) | 2023.03.04 |
[백준] 14502번: 연구소 (0) | 2023.03.03 |
[백준] 2696번: 중앙값 구하기 (0) | 2023.02.25 |
[프로그래머스] [3차] 자동완성 (0) | 2023.02.24 |