일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- tailwind
- 공변성
- webpack
- 타입 좁히기
- 인터섹션
- SSR
- 호이스팅
- TS
- RTK Query
- useAppDispatch
- Cypress
- Jest
- map
- CORS
- React
- ESlint
- recoil
- CI/CD
- async/await
- dfs
- app router
- autosize
- 리터럴 타입
- Promise
- 무한 스크롤
- 이분 검색
- 결정 알고리즘
- 반공변성
- 태그된 유니온
- 투포인터
Archives
- Today
- Total
짧은코딩
게임 개발 본문
반응형
문제 풀이(이해가 안되서 보고 풀음)
# N, M을 공백을 기준으로 구분하여 입력받기
n, m = map(int, input().split())
# 방문한 위치를 저장하기 위한 맵을 생성하여 0으로 초기화
d = [[0] * m for _ in range(n)]
# 현재 캐릭터의 X 좌표, Y 좌표, 방향을 입력받기
x, y, direction = map(int, input().split())
d[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 direction
direction -= 1
if direction == -1:
direction = 3
# 시뮬레이션 시작
count = 1
turn_time = 0
while True:
# 왼쪽으로 회전
turn_left()
#회전하고 전진했다고 가정
nx = x + dx[direction]
ny = y + dy[direction]
# 회전한 이후 정면에 가보지 않은 칸이 존재하는 경우 이동
if d[nx][ny] == 0 and array[nx][ny] == 0:#가보지않은 곳이고 육지이면
d[nx][ny] = 1
x = nx
y = ny
count += 1
turn_time = 0
continue
# 회전한 이후 정면에 가보지 않은 칸이 없거나 바다인 경우
else:
turn_time += 1
# 네 방향 모두 갈 수 없는 경우
if turn_time == 4:
nx = x - dx[direction]
ny = y - dy[direction]
# 뒤로 갈 수 있다면 이동하기
if array[nx][ny] == 0:
x = nx
y = ny
# 뒤가 바다로 막혀있는 경우
else:
break
turn_time = 0
# 정답 출력
print(count)
입력을 받고 북, 동, 남, 서 방향을 리스트로 저장한다. (북의 기준은 왼쪽이다) 그리고 왼쪽으로 회전하는 함수를 만든다. 그리고 count는 들리는 칸의 수이고 trun_time는 네방향 모두다 못가는지 체크하는 변수이다.
1. 우선 회전하고 왼쪽이 안가본 칸이고 육지이면 그 칸으로 간다. 그리고 갔다는 표시를 하고 count의 수를 올리고 turn_time을 0으로 초기화한다. continue를 안해주면 밑에도 실행된다.
2. 만약 안가본 칸이 없어나 바다이면 turn_time을 1올린다.
3. 네 방향 모두 갈 수 없으면 뒤로 이동한다. 뒤로 이동 가능하면 x, y에 xn, xy를 넣어서 다음 루프를 돌린다. 하지만 못가면 멈춘다. 뒤로 갈 수 있으면 마지막 turn_time을 0으로 초기화해준다.
반응형
'코딩 테스트(Python) > 이것이 취업을 위한 코딩 테스트다' 카테고리의 다른 글
탐색 알고리즘 DFS/BFS (0) | 2022.05.12 |
---|---|
재귀 함수 (0) | 2022.05.12 |
왕실의 나이트 (0) | 2022.05.08 |
시각 (0) | 2022.05.07 |
상하좌우 (0) | 2022.05.07 |
Comments