generated from cotes2020/chirpy-starter
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
95 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,95 @@ | ||
--- | ||
title: 🦊 게임 맵 최단거리 | ||
author: gengminy | ||
date: 2023-12-17 12:00:00 +09:00 | ||
categories: [알고리즘, 게임 맵 최단거리] | ||
tags: [알고리즘, 프로그래머스, level2, 구현, 9주차, 노경민] | ||
render_with_liquid: false | ||
math: true | ||
--- | ||
|
||
## 1. 문제 링크 | ||
|
||
[게임 맵 최단거리](https://school.programmers.co.kr/learn/courses/30/lessons/1844) | ||
|
||
<br> | ||
|
||
## 2. 코드 | ||
|
||
```python | ||
def solution(maps): | ||
N = len(maps) | ||
M = len(maps[0]) | ||
|
||
delta = [ | ||
(0, 1), (0, -1), (1, 0), (-1, 0) | ||
] | ||
|
||
visit = [] | ||
for i in range(N): | ||
visit.append([0] * M) | ||
|
||
q = [] | ||
q.append((0, 0)) | ||
|
||
while q: | ||
x, y = q.pop(0) | ||
|
||
for dx, dy in delta: | ||
nx = x + dx | ||
ny = y + dy | ||
|
||
if 0 <= nx < M and 0 <= ny < N and maps[ny][nx] == 1 and not visit[ny][nx]: | ||
visit[y][x] = 1 | ||
q.append((nx, ny)) | ||
maps[ny][nx] = maps[y][x] + 1 | ||
|
||
if maps[N - 1][M - 1] == 1: | ||
return -1 | ||
return maps[N - 1][M - 1] | ||
``` | ||
|
||
- 정확성 테스트 | ||
|
||
채점을 시작합니다. | ||
정확성 테스트 | ||
테스트 1 〉 통과 (0.03ms, 10.2MB) | ||
테스트 2 〉 통과 (0.02ms, 10.3MB) | ||
테스트 3 〉 통과 (0.04ms, 10.3MB) | ||
테스트 4 〉 통과 (0.03ms, 10.2MB) | ||
테스트 5 〉 통과 (0.03ms, 10.2MB) | ||
테스트 6 〉 통과 (0.04ms, 10.2MB) | ||
테스트 7 〉 통과 (0.06ms, 10.3MB) | ||
테스트 8 〉 통과 (0.04ms, 10.2MB) | ||
테스트 9 〉 통과 (0.05ms, 10.4MB) | ||
테스트 10 〉 통과 (0.05ms, 10.2MB) | ||
테스트 11 〉 통과 (0.03ms, 10.2MB) | ||
테스트 12 〉 통과 (0.02ms, 10.2MB) | ||
테스트 13 〉 통과 (0.04ms, 10.4MB) | ||
테스트 14 〉 통과 (0.03ms, 10.4MB) | ||
테스트 15 〉 통과 (0.03ms, 10.2MB) | ||
테스트 16 〉 통과 (0.02ms, 10.2MB) | ||
테스트 17 〉 통과 (0.05ms, 10.4MB) | ||
테스트 18 〉 통과 (0.02ms, 10.3MB) | ||
테스트 19 〉 통과 (0.01ms, 10.2MB) | ||
테스트 20 〉 통과 (0.01ms, 10.4MB) | ||
테스트 21 〉 통과 (0.01ms, 10.2MB) | ||
효율성 테스트 | ||
테스트 1 〉 통과 (9.43ms, 10.3MB) | ||
테스트 2 〉 통과 (2.92ms, 10.5MB) | ||
테스트 3 〉 통과 (6.36ms, 10.3MB) | ||
테스트 4 〉 통과 (4.31ms, 10.3MB) | ||
채점 결과 | ||
정확성: 69.9 | ||
효율성: 30.1 | ||
합계: 100.0 / 100.0 | ||
|
||
<br> | ||
|
||
## 3. 해설 | ||
|
||
전형적인 BFS 길찾기 문제 | ||
|
||
효율성 검사에서 자꾸 시간 초과가 나서 map 자체에 count 를 저장하는 방향으로 바꿈 | ||
|
||
count 를 하나하나 세는 방법으로는 해결할 수 없는듯 |