๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/159993
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
< ๋ฏธ๋ก ํ์ถ >
๋ฌธ์ ํ์ด (Java)
import java.util.*;
class Solution {
public int solution(String[] maps) {
int answer = -1;
char arr[][] = new char[maps.length][maps[0].length()];
int s[] = new int[2];
int l[] = new int[2];
int e[] = new int[2];
for (int i = 0; i < maps.length; i++) {
for (int j = 0; j < maps[0].length(); j++) {
arr[i][j] = maps[i].charAt(j);
if (arr[i][j] == 'S') {
s[0] = i;
s[1] = j;
} else if (arr[i][j] == 'E') {
e[0] = i;
e[1] = j;
} else if (arr[i][j] == 'L') {
l[0] = i;
l[1] = j;
}
}
}
int move1 = bfs(l, s, arr);
int move2 = bfs(l, e, arr);
if (move1 != -1 && move2 != -1) {
answer = move1 + move2;
}
return answer;
}
private int bfs(int[] start, int[] end, char[][] arr) {
Queue<int[]> queue = new LinkedList<>();
queue.add(new int[] { start[0], start[1], 0 });
int dx[] = { -1, 1, 0, 0 };
int dy[] = { 0, 0, -1, 1 };
boolean[][] visited = new boolean[arr.length][arr[0].length];
visited[start[0]][start[1]] = true;
while (!queue.isEmpty()) {
int info[] = queue.poll();
for (int i = 0; i < 4; i++) {
int x = info[0] + dx[i];
int y = info[1] + dy[i];
if (x == end[0] && y == end[1]) {
return info[2] + 1;
}
if (x >= 0 && x < arr.length && y >= 0 && y < arr[0].length && arr[x][y] != 'X' && !visited[x][y]) {
queue.add(new int[] { x, y, info[2] + 1 });
visited[x][y] = true;
}
}
}
return -1;
}
}
๋จผ์ maps๋ฅผ ์ด์ฐจ์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ์ฃผ๋ฉฐ ์์ ์ง์ , ์ถ๊ตฌ, ๋ ๋ฒ ์์น๋ฅผ ๊ตฌํ๋ค. (๋ ๋ฒ->์์)๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ (๋ ๋ฒ->๋์ฐฉ)๊น์ง ๊ฑธ๋ฆฌ๋ ์๊ฐ์ bfs๋ก ๊ตฌํ๋ค. ์ด๋, ๋ ์ค ํ๋๋ผ๋ -1์ด ๋ฐํ๋์๋ค๋ฉด ํ์ถํ ์ ์๋ ๊ฒ์ด๋ฏ๋ก ์ต์ข -1์ ๋ฐํํ๊ณ , ๋ ๋ค -1์ด ์๋๋ผ๋ฉด ์ต์ข ๋ ๊ฐ์ ๋ํด ๋ฐํํ๋ค.
bfs ํจ์์์๋ Queue์ ๋ ๋ฒ ์์น์ ์ด๋ ์๊ฐ 0์ ์ ์ฅํ๊ณ ํ์ฌ ์์น๋ฅผ ๋ฐฉ๋ฌธํ์ ํ๋ค. Queue๊ฐ ๋น ๋๊น์ง ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
1. queue poll
2. ์, ํ, ์ข, ์ฐ๋ฅผ ํ์ํ๋ฉฐ ๋ฐฐ์ด ๋ฒ์ ์์ด๊ณ , ๋ฒฝ์ด ์๋๊ณ , ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ด๋ผ๋ฉด Queue์ ์ ์ฅ ๋ฐ ๋ฐฉ๋ฌธํ์ ํ๋ค. ์ด๋, ๋์ฐฉ ์์น์ ๋๋ฌํ๋ค๋ฉด ๊ฑธ๋ฆฐ ์๊ฐ์ ๋ฐํํ๋ค.
๋ชจ๋ ํ์์ ๋ง์น ๋ค ๋์ฐฉ ์์น์ ๋๋ฌํ์ง ๋ชปํ๋ค๋ฉด -1์ ๋ฐํํ๋ค.
โญ์ค๊ฐ์ ๊ฑฐ์ณ์ผ ํ๋ ๊ณณ์ด ์๋ค๋ฉด (์ค๊ฐ ์์น -> ์์ ์์น) + (์ค๊ฐ ์์น -> ๋์ฐฉ ์์น)๋ฅผ ๊ตฌํ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์๋ค! โญ
๊น๋จน์ง ๋ง๊ธฐ..!

์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ ํ ์คํธ ์ฐ์ต,
https://school.programmers.co.kr/learn/challenges
'๐Algorithm > ๐ฅprogrammers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [programmers] ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (0) | 2026.07.13 |
|---|---|
| [programmers] ํฐ์ผ๋ชฌ (0) | 2026.07.03 |
| [programmers] ์ซ์ ๋ณํํ๊ธฐ (0) | 2026.06.30 |
| [programmers] ํ ์ธ ํ์ฌ (0) | 2026.06.29 |
| [programmers] ๋กค์ผ์ดํฌ ์๋ฅด๊ธฐ (0) | 2026.06.26 |