๋ฌธ์ ์ ๊ทผ
https://school.programmers.co.kr/learn/courses/15009/lessons/121687
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋์ด๋๊ฐ ๊ทธ๋ ๊ฒ ์ด๋ ต์ง ์์ ๊ตฌํ ๋ฌธ์ ์ด๋ค.
๋ฐฉํฅ๋ฒกํฐ๋ฅผ ๊ตฌํํ๊ณ ๋ก๋ด์ ํ์ ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋ฐฉํฅ์ ์ง์ ํด์ค์ง ๊ณ ๋ฏผํ๊ณ , ์ขํ๊ณ๊ฐ ์ผ๋ฐ์ ์ธ ๋ฐฐ์ด์์์ ๊ตฌํ ๋ฌธ์ ์ฒ๋ผ ๋งจ ์ผ์ชฝ ์ ์์น(์ธ๋ฑ์ค)๊ฐ 0, 0์ผ๋ก ์ ํด์ ธ์๋ ๊ฒ์ด ์๋๋ผ ์ธ๋ฑ์ค๋ก ์ผ๋ฐ์ ์ธ x, y ์ขํ๊ณ์์ ์ค์์ธ 0,0 ์์ ์์ง์ด๋ ๊ฒ์์ ์ผ๋ํด์ผํ๋ค.
=> ์ฆ, ๋ณดํต ๋ฐฐ์ด์์ ์์ชฝ์ผ๋ก์ ์ด๋์ int[y][x]๋ก ์๊ฐํ๊ณ y๋ฅผ -1 ํด์ฃผ๋๋ฐ ์ด ๋ฌธ์ ๋ x, y ์ขํ๊ณ ์ด๋ฏ๋ก ์์ชฝ์ผ๋ก ์ด๋ํ๋ค๊ณ ํ๋ฉด ์ ๋ง (x, y) ์ขํ์์ y๊ฐ์ +1 ํด์ค์ (0, 1)๋ก ์๊ฐํด์ผ ํ๋ ๊ฒ์
๋ฌธ์ ํ์ด
์ฐ์ ๋ฐฉํฅ๋ฒกํฐ๋ฅผ ์ด๋ค์์ผ๋ก ์ ์ด๋์์ง ๊ณ ๋ฏผํด์ผํจ
๊ธฐ๋ณธ์ ์ผ๋ก ์์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์๋ ์ํ์์ ์์ํด์
์ค๋ฅธ์ชฝ ํ์ ์ด๋ผ๋ฉด ์์ชฝ -> ์ค๋ฅธ์ชฝ -> ์๋์ชฝ -> ์ผ์ชฝ -> ์์ชฝ ... ์์ด ๋๊ณ
์ผ์ชฝ ํ์ ์ด๋ผ๋ฉด ์์ชฝ -> ์ผ์ชฝ -> ์๋์ชฝ -> ์ค๋ฅธ์ชฝ -> ์์ชฝ .. ์์ด ๋๋ค.
๊ทธ๋์ ์์ชฝ, ์ค๋ฅธ์ชฝ, ์๋์ชฝ, ์ผ์ชฝ์ ๋ฐฉํฅ์ ๊ฐ๋ฆฌํค๋ ๋ฐฉํฅ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ
์ค๋ฅธ์ชฝ ํ์ ์ด๋ผ๋ฉด ๊ทธ๋๋ก ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ +1์ฉ ์ฆ๊ฐ์ํค๋ฉด ์ค๋ฅธ์ชฝ ํ์ ์ ๋ฐ๋ฅธ ๋ฐฉํฅ์ ์ ํ ์ ์๊ณ
์ผ์ชฝ ํ์ ์ด๋ผ๋ฉด ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ -1์ฉ ๊ฐ์์ํค๋ฉด ์ผ์ชฝ ํ์ ์ ๋ฐ๋ฅธ ๋ฐฉํฅ์ ์ ํ ์ ์๊ฒ๋๋ค.
=> ์ด ๋, ์์ ๋งํ๋๋ก x, y์ขํ๊ณ์ (0, 0) ์์ ์์ํ๋ ๊ฒ์ด๋ฏ๋ก ์์ชฝ ๋ฐฉํฅ์ ์ ๋ง +1์ ์๋์ชฝ ๋ฐฉํฅ์ -1์ ํด์ค์ผํ๋ค.
๊ทธ๋ผ ์์ ์ขํ 0, 0 ์ start ๋ฐฐ์ด์ ์ ์ฅํด๋๊ณ ํ์ฌ ๋ฐฉํฅ์ ๋ํ๋ด๋ direction์ ์์ชฝ์ผ๋ก ์ธํ ํด์ฃผ๊ณ ์ฝ๋ ์์ฑ์ ์์ํ๋ฉด๋๋ค.
๋ช ๋ น์ด๋ฅผ for๋ฌธ์ผ๋ก ๋๋ฉด์ ๋ง์ฝ R์ด๋ผ๋ฉด ๊ทธ๋๋ก ๋ฐฉํฅ ๋ฒกํฐ์ +1 ์ฆ๊ฐ๋ฐฉํฅ์ ๋ํด์ฃผ๋ฉด์ ๋ฐฉํฅ์ ์ธํ ํด์ฃผ๊ณ L์ด๋ผ๋ฉด ๋ฐฉํฅ ๋ฒกํฐ์ -1 ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ๋นผ์ฃผ๋ฉด์ ๋ฐฉํฅ์ ์ธํ ํด์ค๋ค.
์ด ๋ ๋ง์ฝ ๋ฐฉํฅ ๋ฒกํฐ์ 3๋ฒ ์ธ๋ฑ์ค์์ 1์ ์ฆ๊ฐ์ํค๋ฉด indexOutOfBounds ์๋ฌ๊ฐ ๋ฐ์ํ๋ค. ๋ง์ฐฌ๊ฐ์ง๋ก 0๋ฒ ์ธ๋ฑ์ค์์ 1์ ๊ฐ์ํด๋ ๋๊ฐ๋ค.
=> ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ๋ฐฉํฅ์ ์ฆ๊ฐ์ํค๋ ์ค๋ฅธ์ชฝ ํ์ ์ผ ๊ฒฝ์ฐ 4๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํด์ฃผ์๊ณ ๋ฐฉํฅ์ ๊ฐ์์ํค๋ ์ผ์ชฝ ํ์ ์ผ ๊ฒฝ์ฐ -1์ ํด์ค ์ํ์์ 4๋ฅผ ๋ํ๊ณ 4๋ก ๋ชจ๋๋ฌ ์ฐ์ฐ์ ํด์ 0๋ฒ์ธ๋ฑ์ค์์ -1์ ๊ฐ์ํ๋ฉด 3์ด ๋๊ฒ๋ ๊ตฌํํ์๋ค.
์ด์ ๋จ์ ๊ฒฝ์ฐ์ธ G, B์ ๊ฒฝ์ฐ๋ G๋ ํ์ฌ ๋ก๋ด์ ๋ฐฉํฅ์ด ์ ์ฅ๋ direction ๋ฐฉํฅ ๊ทธ๋๋ก ์ด๋ํ๋ฉด ๋๋ฏ๋ก ๋ฐฉํฅ ๋ฒกํฐ์ direction ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ ๋ํด์ฃผ๊ณ B๋ ๊ทธ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ํ์ง์ ํ๋ฏ๋ก ๋ฐฉํฅ ๋ฒกํฐ์ direction ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ ๋นผ์ค๋ค.
์ ์ฒด ์ฝ๋
class Solution {
// ์์ชฝ, ์ค๋ฅธ์ชฝ, ์๋์ชฝ, ์ผ์ชฝ ๋ฐฉํฅ๋ฒกํฐ
// R์ด๋ฉด ํ์ฌ ๋ฐฉํฅ(์ธ๋ฑ์ค)๋ฅผ + 1
// L์ด๋ฉด ํ์ฌ ๋ฐฉํฅ(์ธ๋ฑ์ค)๋ฅผ - 1
int[] dx = {1, 0, -1, 0};
int[] dy = {0, 1, 0, -1};
public int[] solution(String command) {
int[] start = {0, 0};
int direction = 0; // ์์ชฝ ๋ฐ๋ผ๋ณด๊ณ ์์
for(char c : command.toCharArray()) {
if(c == 'R') {
direction = (direction + 1) % 4;
} else if(c == 'L') {
direction = ((direction - 1) + 4) % 4;
} else if(c == 'G') {
start[0] += dx[direction];
start[1] += dy[direction];
} else { // ํ์ง์ ๊ฒฝ์ฐ ํ์ฌ ๋ฐฉํฅ์ ๋ฐ๋๋ก ์์ง์
start[0] -= dx[direction];
start[1] -= dy[direction];
}
}
return start;
}
}
'๐ฅ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ธํจ์ด ์ํ๋ฒณ (JAVA ํ์ด) (0) | 2025.10.29 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.25 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.24 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (JAVA ํ์ด) (0) | 2025.10.16 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ํคํจ๋ ๋๋ฅด๊ธฐ (JAVA ํ์ด) (0) | 2025.10.16 |