문제
https://school.programmers.co.kr/learn/courses/30/lessons/120861#
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
캐릭터의 초기 위치는 (0, 0)이다. keyinput을 순서대로 확인하면서 이동 가능한 경우에만 좌표를 변경하면 된다.
단, 캐릭터는 게임판의 범위를 벗어날 수 없으므로 이동하기 전에 다음 좌표가 범위 안에 있는지 확인해야 한다.
예를 들어 왼쪽으로 이동하는 경우에는 x좌표가 최소값보다 크거나 같은지 확인한 뒤 이동한다.
if (dir.equals("left") && answer[0] - 1 >= -board[0] / 2) {
answer[0]--;
}
오른쪽, 위, 아래도 같은 방식으로 이동 후의 좌표가 게임판 범위를 벗어나지 않는 경우에만 좌표를 변경한다.
여기서 게임판의 좌표 범위는 **가로는 -board[0] / 2 ~ board[0] / 2, 세로는 -board[1] / 2 ~ board[1] / 2**가 된다.
예를 들어 board = {7, 9}라면 이동 가능한 좌표는 다음과 같다.
- x좌표: -3 ~ 3
- y좌표: -4 ~ 4
이처럼 매 이동마다 범위를 확인하면서 좌표를 갱신하면 최종 위치를 구할 수 있다.
코드
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = {0,0};
for(int i=0;i<keyinput.length;i++){
String dir=keyinput[i];
if(dir.equals("left") && answer[0]-1>=-board[0]/2){
answer[0]-=1;
}
else if(dir.equals("right") && answer[0]+1<=board[0]/2){
answer[0]+=1;
}
else if(dir.equals("up") && answer[1]+1<=board[1]/2){
answer[1]+=1;
}
else if(dir.equals("down") && answer[1]-1>=-board[1]/2){
answer[1]-=1;
}
}
return answer;
}
}
'PS > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv.0] 로그인 성공?(Java) (0) | 2026.08.09 |
|---|---|
| [프로그래머스 Lv.0] 외계어 사전(Java) (0) | 2026.08.08 |
| [프로그래머스 Lv.0] 영어가 싫어요(Java) (0) | 2026.08.01 |
| [프로그래머스 Lv.0] 삼각형의 완성조건(2)(Java) (0) | 2026.07.29 |
| [프로그래머스 Lv.0] 구슬을 나누는 경우의 수(Java) (0) | 2026.07.28 |
댓글