-
728x90
๐ ๋ฌธ์ ์ค๋ช
๋จธ์ฑ์ด๋ RPG๊ฒ์์ ํ๊ณ ์์ต๋๋ค. ๊ฒ์์๋
up, down, left, right
๋ฐฉํฅํค๊ฐ ์์ผ๋ฉฐ ๊ฐ ํค๋ฅผ ๋๋ฅด๋ฉด ์, ์๋, ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ผ๋ก ํ ์นธ์ฉ ์ด๋ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [0,0]์์ up์ ๋๋ฅธ๋ค๋ฉด ์บ๋ฆญํฐ์ ์ขํ๋ [0, 1], down์ ๋๋ฅธ๋ค๋ฉด [0, -1], left๋ฅผ ๋๋ฅธ๋ค๋ฉด [-1, 0], right๋ฅผ ๋๋ฅธ๋ค๋ฉด [1, 0]์ ๋๋ค. ๋จธ์ฑ์ด๊ฐ ์ ๋ ฅํ ๋ฐฉํฅํค์ ๋ฐฐ์ดkeyinput
์ ๋งต์ ํฌ๊ธฐ board์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์บ๋ฆญํฐ๋ ํญ์ [0,0]์์ ์์ํ ๋ ํค ์ ๋ ฅ์ด ๋ชจ๋ ๋๋ ๋ค์ ์บ๋ฆญํฐ์ ์ขํ [x, y]๋ฅผ returnํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.[0, 0]์ board์ ์ ์ค์์ ์์นํฉ๋๋ค. ์๋ฅผ ๋ค์ด
board
์ ๊ฐ๋ก ํฌ๊ธฐ๊ฐ 9๋ผ๋ฉด ์บ๋ฆญํฐ๋ ์ผ์ชฝ์ผ๋ก ์ต๋ [-4, 0]๊น์ง ์ค๋ฅธ์ชฝ์ผ๋ก ์ต๋ [4, 0]๊น์ง ์ด๋ํ ์ ์์ต๋๋ค.๐ ์ ํ ์ฌํญ
board
์ [๊ฐ๋ก ํฌ๊ธฐ, ์ธ๋ก ํฌ๊ธฐ] ํํ๋ก ์ฃผ์ด์ง๋๋ค.board
์ ๊ฐ๋ก ํฌ๊ธฐ์ ์ธ๋ก ํฌ๊ธฐ๋ ํ์์ ๋๋ค.board
์ ํฌ๊ธฐ๋ฅผ ๋ฒ์ด๋ ๋ฐฉํฅํค ์ ๋ ฅ์ ๋ฌด์ํฉ๋๋ค.- 0 ≤ keyinput์ ๊ธธ์ด ≤ 50
- 1 ≤ board[0] ≤ 99
- 1 ≤ board[1] ≤ 99
- keyinput์ ํญ์ up, down, left, right๋ง ์ฃผ์ด์ง๋๋ค.
๐ ๋ต์
class Solution { public int[] solution(String[] keyinput, int[] board) { int[] answer = new int[2]; int w = ((board[0]-1)/2); int h = ((board[1]-1)/2); for(String key:keyinput) { if(key.equals("left") || key.equals("right")) { if( ( w > answer[0] && answer[0] > w * -1) || (w == answer[0] && key.equals("left")) || (w*-1 == answer[0] && key.equals("right")) ) { answer[0] += key.equals("right")? 1:-1; } } else { if( (h > answer[1] && answer[1] > h*-1 ) || (h == answer[1] && key.equals("down")) || (h*-1 == answer[1] && key.equals("up")) ) { answer[1] += key.equals("up")? 1:-1; } } } return answer; } }
8๋ฒ ํ ์คํธ ์ผ์ด์ค์์ ๊ฐ๋ก๋งํ์ ์กฐ๊ฑด์ ์ถ๊ฐํ๋ค๋ณด๋ ๊ตฌ๊ตฌ์ ์ ์คํ๊ฒํฐ ์ฝ๋ ์์ฑ!! ๐๐~~
์ด์จ๊ฑฐ๋ ํ ์คํธ๋ ํต๊ณผํ๊ธฐ์ ์ ๋ฆฌํด๋ณธ๋ค.
์ฐ์ board์ ๊ฐ๋ก, ์ธ๋ก ์ ํ ๊ฐ์ w์ h์ ๊ฐ๊ฐ ๋ด์์ค๋ค. ๊ทธ๋ฆฌ๊ณ keyinput์ ์์๋งํผ for๋ฌธ์ ๋๋ฉด์ left, right์ผ ๋๋
answer[0]
๊ฐ์ ์ธํ ํด์ผ ํ๋answer[0]
์ด ๋งต์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ ์ฌ์ด์ ์์นํ๋์ง, ์ต๋๊ฐ๊ณผ ์ผ์นํ๋ค๋ฉด left์ธ์ง, ์ต์๊ฐ๊ณผ ์ผ์นํ ๋ right์ธ์ง ํ๋จํ์ฌanswer[0]
์์๋ฅผ ๊ฒฐ์ ํ๋ค.๊ทธ๋ฆฌ๊ณ up,down์ผ ๋ ๋ง์ฐฌ๊ฐ์ง๋ก
answer[1]
๊ฐ์ ์ธํ ํด์ผ ํ๋ ๋งต์ ์ต์๊ฐ, ์ต๋๊ฐ ์ฌ์ด์ธ์ง, ์ต๋๊ฐ๊ณผ ์ผ์นํ๋ค๋ฉด down์ธ์ง, ์ต์๊ฐ๊ณผ ์ผ์นํ๋ค๋ฉด up์ธ์ง๋ฅผ ํ๋จํ์ฌ ์์๋ฅผ ๊ฒฐ์ ํ๋ค.๊ทผ๋ฐ ์ด๋ ๊ฒ ๋ณต์กํ๊ฒ ์กฐ๊ฑด์ ๊ตฌ๊ตฌ์ ์ ์จ๋ด๋ ค๊ฐ ํ์ ์์ด ์ผํญ์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋ฉด 4์ค๋ก ์ค์ผ ์ ์๋ค.
๐ ๊ฐ์ ๋ ๋ต์
class Solution { public int[] solution(String[] keyinput, int[] board) { int[] answer = new int[2]; for(String key:keyinput) { if(key.equals("left")) answer[0] += -(board[0]-1)/2 < answer[0]? -1:0; if(key.equals("right")) answer[0] += (board[0]-1)/2 > answer[0]? 1:0; if(key.equals("up")) answer[1] += (board[1]-1)/2 > answer[1]? 1:0; if(key.equals("down")) answer[1] += -(board[1]-1)/2 < answer[1]? -1:0; } return answer; } }
ํฐ ํ์ ์์ ์คํ๊ฒํฐ ๋ก์ง๊ณผ ๋ค๋ฅด์ง ์์ง๋ง ํํํ๋ ๋ฐฉ์์ ๋ฐ๋ผ ์ด๋ ๊ฒ ๊ฐ๊ฒฐํ ์ฝ๋๋ก ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
ํ์ ์์๋ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ ธ์ ์ผํญ์ฐ์ฐ์๋ฅผ ์์ฃผ ์ฌ์ฉํ์ง ์๋๋ค๊ณ ๋ค ํ์ง๋ง ์๊ณ ๋ฆฌ์ฆ ํ์ด์์๋ ๋ง์ด ๋ฑ์ฅํ๋ ์์๋๋ ๊ฒ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
๐ก ์ฐธ๊ณ
๋ฌธ์์ดA.equals(๋ฌธ์์ดB)
: ๋ฌธ์์ดA์ ๋ฌธ์์ดB๊ฐ ์ผ์น ์ฌ๋ถ๋ฅผ ๋ฆฌํดํ๋ ํจ์, ์ผ์นํ๋ฉด true ๋ถ์ผ์นํ๋ฉด false๋ฅผ ๋ฆฌํด
728x90'algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ป ์๋ฐ ์๊ณ ๋ฆฌ์ฆ - ์ ์ฃผ์ ์ซ์ 3 (0) 2023.09.14 ๐ป ์๋ฐ ์๊ณ ๋ฆฌ์ฆ - ์ต๋๊ฐ ๋ง๋ค๊ธฐ (2) (0) 2023.09.11 ๐ป ์๋ฐ ์๊ณ ๋ฆฌ์ฆ - ์ง์ฌ๊ฐํ ๋์ด ๊ตฌํ๊ธฐ (0) 2023.09.10 ๐ป ์๋ฐ ์๊ณ ๋ฆฌ์ฆ - ์ธ๊ณ์ด ์ฌ์ (0) 2023.09.09 ๐ป ์๋ฐ ์๊ณ ๋ฆฌ์ฆ - ์ผ๊ฐํ์ ์์ฑ์กฐ๊ฑด(2) (0) 2023.09.09