반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- html
- 프로그래머스
- 자바
- 해슁
- java
- front-end
- algorithm
- Color
- 구현
- 코딩테스트
- 알고리즘
- DP
- SQL
- android
- Kotlin
- DFS
- Web
- CSS
- SWEA
- CleanCode
- inflearn
- 클린코드
- 검색트리
- Spring
- BFS
- 다이나믹 프로그래밍
- 순환
- 정렬
- codecademy
- javascript
Archives
- Today
- Total
깡뇽
[코테] 구현 문제풀기 - 게임 개발 본문
반응형
Day7
구현 문제풀기 - 게임 개발 (난이도 중)
<문제>
N X M 크기의 직사각형 맵에서 각 칸은 육지 또는 바다로 이루어져 있다. 캐릭터는 동서남북 중에 한 방향을 바라보고 있으며, 상하좌우로 육지로 움직일 수 있다.
1. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례로 갈 곳을 정함.
2. 캐릭터의 바로 왼쪽 방향에 아직 방문하지 않은 칸이 있으면, 왼쪽 방향으로 회전한 다음 왼쪽으로 한 칸 전진함. 왼쪽 방향에 칸이 다 방문한 칸이면, 왼쪽 방향으로 회전만 하고 1단계로 돌아감.
3. 만약 네 방향 모두 이미 가본 칸이거나 바다로 된 칸이면, 바라보는 방향을 유지한 채로 한 칸 뒤로 가고 1단계로 돌아감. 단, 이때 뒤쪽 방향이 바다인 칸이라 뒤로 갈 수 없으면 움직임 멈추기.
<조건>
첫째 줄 : 맵 크기. N과 M.
둘째 줄 : 캐릭터의 위치 좌표 & 방향
N줄 : 육지와 바다. 0과 1.
게임 개발 풀이
#솔루션
n, m = map(int, input().split())
x, y, d = map(int, input().split())
world = [[0]*m for _ in range(n)] # 방문한 위치 저장 맵
world[x][y] = 1 # 현재 좌표 방문했다고 표시
# 전체 맵 입력
array = []
for i in range(n):
array.append(list(map(int, input().split())))
# 북, 동, 남, 서
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# 왼쪽으로 회전
def turn_left():
global d
d -= 1
if d == -1:
d = 3
# 시작
cnt = 1
turn_time = 0
while True:
# 왼쪽으로 회전
turn_left()
nx = x + dx[d]
ny = y + dy[d]
#회전한 이후 정면에 가보지 않은 칸이 있다면 이동
if world[nx][ny] == 0 and array[nx][ny] == 0:
world[nx][ny] = 1
x = nx
y = ny
cnt += 1
turn_time = 0
continue
#회전한 이후 정면에 가보지 않은 칸이 없거나 바다
else:
turn_time += 1
# 네 방향 모두 갈 수 없음
if turn_time == 4:
nx = x - dx[d]
ny = y - dy[d]
# 뒤로 갈 수 있으면 이동
if array[nx][ny] == 0:
x = nx
y = ny
# 뒤가 바다
else:
break
turn_time = 0
print(cnt)
아직 100% 이해하지 못했다..
반응형
'Algorithm > Coding Test' 카테고리의 다른 글
[코테] DFS/BFS 문제풀기 - 음료수 얼려 먹기 (0) | 2022.02.11 |
---|---|
[코테] DFS/BFS 공부하기 (0) | 2022.02.10 |
[코테] 구현 문제풀기 - 왕실의 나이트 (0) | 2022.02.03 |
[코테] 구현 공부하기 (9) | 2022.02.02 |
[코테] 그리디 문제풀기 - 1이 될 때까지 (0) | 2022.02.01 |