코테/프로그래머스
[프로그래머스/Lv. 0] 캐릭터의 좌표
imname1am
2023. 2. 11. 16:27
반응형
내 코드 (틀림)
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;
}
}
길긴 하지만...나름 예외 안 놓치게끔 짰다고 생각했는데 패스 못 함....ㅠ
그래서 어떤 반례가 있는지 질문하기 란에서 찾아봤고...
결국 더 단순히 짤 수 있는 코드를 찾아보기로 했다..
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
프로그래머스 캐릭터의 좌표
머쓱이는 RPG게임을 하고 있습니다. 게임에는 up, down, left, right 방향키가 있으며 각 키를 누르면 위, 아래, 왼쪽, 오른쪽으로 한 칸씩 이동합니다. 예를 들어 0,0에서 up을 누른다면 캐릭터의 좌표는
velog.io
윗 분 코드로 패스했다...!
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문을 사용하셨네...
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
다른 정답 코드들도 봤는데 나한테는 이게 제일 이해하기 단순하고 쉬웠다...
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;
}
}
반응형