반응형
내 코드 (틀림)
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = new int[2];
// 상하좌우 cnt 배열 생성
int[] direction = new int[4];
for(int i = 0 ; i < keyinput.length ; i++) {
if(keyinput[i].equals("up")) direction[0]++; // 상
else if(keyinput[i].equals("down")) direction[1]++; // 하
else if(keyinput[i].equals("left")) direction[2]++; // 좌
else if(keyinput[i].equals("right")) direction[3]++; // 우
}
for(int d=0 ; d < direction.length ; d++) {
// 좌우가 board 가로 크기를 넘어가는 경우
if((d==2) || (d==3)) {
if(direction[d] >= (board[0]/2)) {
direction[d] = board[0]/2;
}
}
// 상하가 board 세로 크기를 넘어가는 경우
else if((d==0) || (d==1)) {
if(direction[d] >= (board[1]/2)) {
direction[d] = board[1]/2;
}
}
}
// 가로 (좌우)
answer[0] = direction[3] - direction[2];
// 세로 (상하)
answer[1] = direction[0] - direction[1];
return answer;
}
}
길긴 하지만...나름 예외 안 놓치게끔 짰다고 생각했는데 패스 못 함....ㅠ
그래서 어떤 반례가 있는지 질문하기 란에서 찾아봤고...
결국 더 단순히 짤 수 있는 코드를 찾아보기로 했다..
윗 분 코드로 패스했다...!
class Solution {
public int[] solution(String[] keyinput, int[] board) {
int[] answer = new int[2];
for(String s : keyinput) {
switch(s) {
case "up" -> {
if(answer[1] >= board[1] / 2) {
continue;
}
answer[1]++;
}
case "down" -> {
if(answer[1] <= -(board[1] / 2)) {
continue;
}
answer[1]--;
}
case "right" -> {
if(answer[0] >= board[0] / 2) {
continue;
}
answer[0]++;
}
default -> {
if(answer[0] <= -(board[0] / 2)) {
continue;
}
answer[0]--;
}
}
}
return answer;
}
}
case문을 사용하셨네...
다른 정답 코드들도 봤는데 나한테는 이게 제일 이해하기 단순하고 쉬웠다...
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 s : keyinput) {
if(s.equals("up") && (answer[1] < height)) {
answer[1]++;
} else if(s.equals("down") && (answer[1] > -height)) {
answer[1]--;
} else if(s.equals("left") && (answer[0] > -width)) {
answer[0]--;
} else if(s.equals("right") && (answer[0] < width)) {
answer[0]++;
}
}
return answer;
}
}
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 0] 다항식 더하기 (0) | 2023.02.13 |
---|---|
[프로그래머스/Lv. 0] 소인수분해 (0) | 2023.02.11 |
[프로그래머스/Lv. 0] 다음에 올 숫자 (0) | 2023.02.09 |
[프로그래머스/Lv. 0] 숨어있는 숫자의 덧셈 (2) (0) | 2023.02.09 |
[프로그래머스/Lv. 0] 한 번만 등장한 문자 (0) | 2023.02.09 |