https://school.programmers.co.kr/learn/courses/30/lessons/120861
- up,down, left, right 방향으로 이동한 결과가 각 세로, 가로 크기와 같다면 세로,가로크기를 return
정답
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = {0,0};
int length = board[1]/2; //세로 길이 y 최대값
int width = board[0]/2; //가로 길이 x 최대값
for(int i=0; i<keyinput.length; i++)
{
String cur = keyinput[i];
if(cur.equals("up"))
{
if(answer[1]!=length)
{
answer[1] = answer[1]+1;
}
else
{
answer[1] = length;
}
}
else if(cur.equals("down"))
{
if(answer[1] != (-length))
{
answer[1] = answer[1]-1;
}
else
{
answer[1] = (-length);
}
}
else if(cur.equals("right"))
{
if(answer[0]!=width)
{
answer[0] = answer[0]+1;
}
else
{
answer[0] = width;
}
}
else if(cur.equals("left"))
{
if(answer[0]!=(-width))
{
answer[0] = answer[0]-1;
}
else
{
answer[0] = (-width);
}
}
}
return answer;
}
}
다른 사람의 풀이
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int numRow = board[1];
int numCol = board[0];
int r = 0;
int c = 0;
for (String key : keyinput) {
switch (key.charAt(0)) {
case 'l':
c = Math.max(-numCol / 2, c - 1);
break;
case 'r':
c = Math.min(numCol / 2, c + 1);
break;
case 'd':
r = Math.max(-numRow / 2, r - 1);
break;
case 'u':
r = Math.min(numRow / 2, r + 1);
break;
}
System.out.println(r + " " + c);
}
return new int[]{c, r};
}
}
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = {0 ,0};
int width = board[0]/2;
int height = board[1]/2;
for(String input: keyinput) {
if(input.equals("up") && answer[1] < height) {
answer[1]++;
} else if (input.equals("down") && answer[1] > -height) {
answer[1]--;
}else if (input.equals("left") && answer[0] > -width) {
answer[0]--;
}else if (input.equals("right") && answer[0] < width) {
answer[0]++;
}
}
return answer;
}
}
'Java > 프로그래머스' 카테고리의 다른 글
[JAVA] 프로그래머스 - 다항식 더하기 (0) | 2024.05.10 |
---|---|
[JAVA] 프로그래머스 - 최댓값 만들기(2) (0) | 2024.05.09 |
[JAVA] 프로그래머스 - 직사각형 넓이 구하기 (0) | 2024.05.09 |
[JAVA] 프로그래머스 - 잘라서 배열로 저장하기 (0) | 2024.05.07 |
[JAVA] 프로그래머스 - 7의 개수 (0) | 2024.05.07 |