|
| 1 | +# [level 2] 미로 탈출 - 159993 |
| 2 | + |
| 3 | +[문제 링크](https://school.programmers.co.kr/learn/courses/30/lessons/159993) |
| 4 | + |
| 5 | +### 성능 요약 |
| 6 | + |
| 7 | +메모리: 91.9 MB, 시간: 6.75 ms |
| 8 | + |
| 9 | +### 구분 |
| 10 | + |
| 11 | +코딩테스트 연습 > 연습문제 |
| 12 | + |
| 13 | +### 채점결과 |
| 14 | + |
| 15 | +정확성: 100.0<br/>합계: 100.0 / 100.0 |
| 16 | + |
| 17 | +### 제출 일자 |
| 18 | + |
| 19 | +2025년 08월 25일 13:35:57 |
| 20 | + |
| 21 | +### 문제 설명 |
| 22 | + |
| 23 | +<p>1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는 칸을 지나갈 수 있습니다. 미로에서 한 칸을 이동하는데 1초가 걸린다고 할 때, 최대한 빠르게 미로를 빠져나가는데 걸리는 시간을 구하려 합니다.</p> |
| 24 | + |
| 25 | +<p>미로를 나타낸 문자열 배열 <code>maps</code>가 매개변수로 주어질 때, 미로를 탈출하는데 필요한 최소 시간을 return 하는 solution 함수를 완성해주세요. 만약, 탈출할 수 없다면 -1을 return 해주세요.</p> |
| 26 | + |
| 27 | +<hr> |
| 28 | + |
| 29 | +<h5>제한사항</h5> |
| 30 | + |
| 31 | +<ul> |
| 32 | +<li>5 ≤ <code>maps</code>의 길이 ≤ 100 |
| 33 | + |
| 34 | +<ul> |
| 35 | +<li>5 ≤ <code>maps[i]</code>의 길이 ≤ 100</li> |
| 36 | +<li><code>maps[i]</code>는 다음 5개의 문자들로만 이루어져 있습니다. |
| 37 | + |
| 38 | +<ul> |
| 39 | +<li>S : 시작 지점</li> |
| 40 | +<li>E : 출구</li> |
| 41 | +<li>L : 레버</li> |
| 42 | +<li>O : 통로</li> |
| 43 | +<li>X : 벽</li> |
| 44 | +</ul></li> |
| 45 | +<li>시작 지점과 출구, 레버는 항상 다른 곳에 존재하며 한 개씩만 존재합니다.</li> |
| 46 | +<li>출구는 레버가 당겨지지 않아도 지나갈 수 있으며, 모든 통로, 출구, 레버, 시작점은 여러 번 지나갈 수 있습니다.</li> |
| 47 | +</ul></li> |
| 48 | +</ul> |
| 49 | + |
| 50 | +<hr> |
| 51 | + |
| 52 | +<h5>입출력 예</h5> |
| 53 | +<table class="table"> |
| 54 | + <thead><tr> |
| 55 | +<th>maps</th> |
| 56 | +<th>result</th> |
| 57 | +</tr> |
| 58 | +</thead> |
| 59 | + <tbody><tr> |
| 60 | +<td>["SOOOL","XXXXO","OOOOO","OXXXX","OOOOE"]</td> |
| 61 | +<td>16</td> |
| 62 | +</tr> |
| 63 | +<tr> |
| 64 | +<td>["LOOXS","OOOOX","OOOOO","OOOOO","EOOOO"]</td> |
| 65 | +<td>-1</td> |
| 66 | +</tr> |
| 67 | +</tbody> |
| 68 | + </table> |
| 69 | +<hr> |
| 70 | + |
| 71 | +<h5>입출력 예 설명</h5> |
| 72 | + |
| 73 | +<p>입출력 예 #1</p> |
| 74 | + |
| 75 | +<p>주어진 문자열은 다음과 같은 미로이며</p> |
| 76 | + |
| 77 | +<p><img src="https://user-images.githubusercontent.com/62426665/214443486-cb2b84a4-afc6-4b25-8da2-645a853859f1.png" title="" alt="image1"></p> |
| 78 | + |
| 79 | +<p>다음과 같이 이동하면 가장 빠른 시간에 탈출할 수 있습니다.</p> |
| 80 | + |
| 81 | +<p><img src="https://user-images.githubusercontent.com/62426665/207090680-93289071-da4f-4126-9c31-066c1d4d3802.png" title="" alt="image2"></p> |
| 82 | + |
| 83 | +<p>4번 이동하여 레버를 당기고 출구까지 이동하면 총 16초의 시간이 걸립니다. 따라서 16을 반환합니다.</p> |
| 84 | + |
| 85 | +<p>입출력 예 #2</p> |
| 86 | + |
| 87 | +<p>주어진 문자열은 다음과 같은 미로입니다.</p> |
| 88 | + |
| 89 | +<p><img src="https://user-images.githubusercontent.com/62426665/214443892-1e7734e9-b4c8-49af-ba29-aa5597039617.png" title="" alt="image3"></p> |
| 90 | + |
| 91 | +<p>시작 지점에서 이동할 수 있는 공간이 없어서 탈출할 수 없습니다. 따라서 -1을 반환합니다.</p> |
| 92 | + |
| 93 | + |
| 94 | +> 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges |
0 commit comments