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
- react
- baekjoon
- Reactjs
- JavaScript
- 프로그래머스
- jsx
- 파이썬
- let
- Navigation Bar
- slick
- Carousel
- swea
- HTML
- react-slick
- navbar
- programmers
- 호이스팅
- 함수표현식
- 함수선언식
- 알고리즘
- Python
- 게임 맵 최단거리
- 취뽀기원
- react slick
- JS
- var
- 레지스터
- 코딩테스트
- 취준생
- 18352
Archives
- Today
- Total
고짬기록
[프로그래머스 Level 2] 게임 맵 최단거리 Python3 / JavaScript 본문
문제 주소 및 출처 ❕
https://programmers.co.kr/learn/courses/30/lessons/1844
코딩테스트 연습 - 게임 맵 최단거리
[[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,1],[0,0,0,0,1]] 11 [[1,0,1,1,1],[1,0,1,0,1],[1,0,1,1,1],[1,1,1,0,0],[0,0,0,0,1]] -1
programmers.co.kr
문제 : Level 2 게임 맵 최단거리
언어 : Python3 / JavaScript
😥 정사각형 맵으로 생각해서 계속 틀린 문제,, 문제를 잘 읽읍시다❣
💬 나의 코드
📌 Python3
def solution(maps):
n = len(maps)
m = len(maps[0])
check = [[0]*m for _ in range(n)]
queue = [(0, 0)]
check[0][0] = 1
# 상 하 좌 우
dr = [-1, 1, 0, 0]
dc = [0, 0, -1, 1]
while queue:
v = queue.pop(0)
r = v[0]
c = v[1]
for i in range(4):
new_r = r + dr[i]
new_c = c + dc[i]
if 0 <= new_r < n and 0 <= new_c < m and maps[new_r][new_c] and check[new_r][new_c] == 0:
queue.append((new_r, new_c))
check[new_r][new_c] = check[r][c] + 1
if check[n-1][m-1]:
answer = check[n-1][m-1]
else:
answer = -1
return answer
📌 JavaScript
function solution(maps) {
var answer = -1
const n = maps.length
const m = maps[0].length
var check = new Array(n)
for (let i=0; i<n; i++) {
check[i] = new Array(m)
for (let j=0; j<m; j++) {
check[i][j] = 0
}
}
var queue = [[0, 0]]
check[0][0] = 1
var dr = [-1, 1, 0, 0]
var dc = [0, 0, -1, 1]
while (queue.length > 0) {
var v = queue.shift()
var r = v[0]
var c = v[1]
for (let i=0; i<4; i++) {
var new_r = r + dr[i]
var new_c = c + dc[i]
if (0 <= new_r && new_r < n && 0 <= new_c && new_c < m) {
if (maps[new_r][new_c] === 1 && check[new_r][new_c] === 0) {
queue.push([new_r, new_c])
check[new_r][new_c] = check[r][c] + 1
}
}
}
}
if (check[n-1][m-1]) {
answer = check[n-1][m-1]
}
return answer;
}
'알고리즘 공부 ⌨ > 프로그래머스' 카테고리의 다른 글
[프로그래머스 Level 2] 배달 Python3 / JavaScript (0) | 2021.07.23 |
---|---|
[프로그래머스 Level 2] 괄호 회전하기 Python3 / JavaScript (0) | 2021.07.22 |
[프로그래머스 Level 2] 행렬 테두리 회전하기 Python3 / JavaScript (0) | 2021.07.03 |
[프로그래머스 Level 1] 신규 아이디 추천 Python3 / JavaScript (0) | 2021.06.08 |
[프로그래머스 Level 1] 소수 만들기 Python3 / JavaScript (0) | 2021.06.04 |
Comments