📖 문제
https://www.acmicpc.net/problem/14503
💻 코드
import sys
N, M = map(int, sys.stdin.readline().strip().split())
r, c, d = map(int, sys.stdin.readline().strip().split())
dir = ((-1, 0), (0, 1), (1, 0), (0, -1))
mp = []
for _ in range(N):
mp.append(list(map(int, sys.stdin.readline().strip().split())))
count = 1
mp[r][c] = 2
while True:
done = False
for _ in range(4):
# 코드 가독성을 위해 next_r, next_c 변수 선언
next_r, next_c = r + dir[(d + 3) % 4][0], c + dir[(d + 3) % 4][1]
if 0 <= next_r < N and 0 <= next_c < M and mp[next_r][next_c] == 0:
d = (d + 3) % 4
r, c = next_r, next_c
mp[r][c] = 2
count += 1
done = True
break
else:
d = (d + 3) % 4
if done:
continue
# 코드 가독성을 위해 next_r, next_c 변수 선언
next_r, next_c = r + dir[(d + 2) % 4][0], c + dir[(d + 2) % 4][1]
if 0 <= next_r < N and 0 <= next_c < M and mp[next_r][next_c] == 2:
r, c = next_r, next_c
continue
else:
break
print(count)
🙌 한마디
특정 알고리즘을 이용하지 않아도 되는 구현 문제일수록 문제의 요구사항이 복잡한 경우가 많다.
이번 문제도 그러했는데, 코드를 짠 후에 수정하는 시간을 단축하기 위해서 문제 설명을 세심하게 읽어보고, 출제 의도를 정확하게 파악하는 것이 중요하다고 느꼈다.
'Problem Solving > 📗BOJ' 카테고리의 다른 글
[Programmers] N으로 표현 (Python) (0) | 2021.10.21 |
---|---|
[BOJ] 14501번: 퇴사 (Python) (0) | 2021.10.21 |
[BOJ] 14502번: 연구소 (Python) (0) | 2021.10.17 |
[BOJ] 3190번: 뱀 (Python) (0) | 2021.10.16 |
[BOJ] 13460번: 구슬 탈출 2 (Python) (0) | 2021.10.16 |