-
[Java 자바] 프로그래머스 Lv 0 - 캐릭터의 좌표Study/Java 2024. 11. 28. 11:26728x90반응형
목차
1. 문제 설명
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만 주어집니다.
2. 입출력 예시
입출력 예시
#1
[0, 0]에서 왼쪽으로 한 칸 오른쪽으로 한 칸 위로 한 칸 오른쪽으로 두 칸 이동한 좌표는 [2, 1]입니다.
#2
[0, 0]에서 아래로 다섯 칸 이동한 좌표는 [0, -5]이지만 맵의 세로 크기가 9이므로 아래로는 네 칸을 넘어서 이동할 수 없습니다. 따라서 [0, -4]를 return합니다.
3. 문제 풀이
반응형문제 풀이
1. 변수 x와 y를 만들어 캐릭터의 시작 지점을 정한다.
2. board의 가로 크기와 세로 크기는 홀수이기 때문에, (board[]-1)을 2로 나눈 값을 맵의 끝 좌표로 정한다.
3. 반복문을 사용하여 keyinput 배열 길이만큼 반복한다.
4. 조건문을 사용하여 keyinput의 문자를 확인하여 문자에 따라 행동한다.
5. up이라면, 맵 세로의 가장 위에 있는지 확인하고 아니라면, y에 1을 더한다.
6. down이라면, 맵 세로의 가장 아래에 있는지 확인하고 아니라면, y에 1을 뺀다.
7. 좌우 이동도 이를 참고하여 사용한다.
8. answer에 [x, y]를 넣어 최종 반환한다.
class Solution { public int[] solution(String[] keyinput, int[] board) { // 캐릭터 시작 지점 int x = 0; int y = 0; // 맵 크기 int limitX = (board[0]-1)/2; int limitY = (board[1]-1)/2; // 캐릭터 이동 for(int i=0; i<keyinput.length; i++){ if(keyinput[i].equals("up")){ y += (limitY-y>0) ? 1 : 0; } else if(keyinput[i].equals("down")){ y -= ((limitY*(-1))-y<0) ? 1 : 0; } else if(keyinput[i].equals("left")){ x -= ((limitX*(-1))-x<0) ? 1 : 0; } else if(keyinput[i].equals("right")){ x += (limitX-x>0) ? 1 : 0; } } int[] answer = {x, y}; return answer; } }
728x90반응형'Study > Java' 카테고리의 다른 글
[Java 자바] 프로그래머스 Lv 0 - 다항식 더하기 (0) 2024.11.30 [Java 자바] 프로그래머스 Lv 0 - 최댓값 만들기 (2) (1) 2024.11.29 [Java 자바] 프로그래머스 Lv 0 - 직사각형 넓이 구하기 (0) 2024.11.27 [Java 자바] 프로그래머스 Lv 0 - 중복된 숫자 개수 (0) 2024.11.26 [Java 자바] 프로그래머스 Lv 0 - 잘라서 배열로 저장하기 (0) 2024.11.25