안녕하세요.
이번 포스팅은 Cos Pro 1급 Java 2차 기출 6번 문제인 로봇을 움직여주세요 를 풀어보겠습니다.
drcode-devblog.tistory.com/111?category=931716
이 문제는 프로그래머스 Level 2에서 풀었던 방문 길이랑 비슷한 문제이긴 하나
난이도는 프로그래머스 문제가 훨씬 어려운 것 같습니다
□ 문제설명
로봇이 아래 그림과 같이 2차원 평면의 원점 (0, 0)에 서있습니다.
이 로봇은 x축 방향, 혹은 y축 방향으로만 움직일 수 있으며, 알파벳으로 명령을 내릴 수 있습니다. 명령을 내릴 때 사용하는 알파벳은 'L', 'R', 'U', 'D'의 4가지이며, 'L'은 x축 방향으로 -1만큼, 'R'은 x축 방향으로 +1만큼, 'U'는 y축 방향으로 +1만큼, 'D'는 y축 방향으로 -1 만큼 이동하라는 의미입니다.
로봇에게 내린 명령이 순서대로 들어있는 문자열 commands가 매개변수로 주어질 때, 주어진 명령을 모두 수행한 후의 로봇 위치를 return 하도록 solution 함수를 완성해주세요.
□ 매개변수 설명
로봇에게 내린 명령이 순서대로 들어있는 문자열 commands가 solution 함수의 매개변수로 주어집니다.
- commands는 알파벳 대문자 'L', 'R', 'U', 'D'로만 이루어진 문자열이며, 길이는 1 이상 100 이하입니다.
□ return 값 설명
주어진 명령을 모두 수행한 후의 로봇 위치를 return 해주세요.
- [x축 좌표, y축 좌표] 형태로 로봇의 최종 위치를 배열에 담아 return 해주세요.
□ 예시
commands | return |
"URDDL" | [0, -1] |
□ 예시설명
"URDDL"명령에 따라 (0, 0)에 있는 로봇은 다음과 같이 움직입니다.
- [0, 0] → [0, 1] → [1, 1] → [1, 0] → [1, -1] → [0, -1]
따라서 로봇의 최종 위치는 [0, -1]입니다.
※ 문제 접근 방식
(1) 반복문으로 commands길이만큼 순회합니다.
(2) 방향만큼 x,y 를 증감시킵니다
(3) 결과 배열에 x,y를 넣고 반환합니다.
package moveRobot;
import java.util.Arrays;
public class MoveRobot {
public static void main(String[] args) {
Main sol = new Main();
String commands = "URDDL";
int[] ret = sol.solution(commands);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + Arrays.toString(ret) + " 입니다.");
}
}
class Main {
public int[] solution(String commands) {
int[] answer = new int[2];
int x = 0, y = 0, i = 0;
while(i < commands.length()) {
switch(commands.substring(i, i+1)) {
case "U" : y++; break;
case "D" : y--; break;
case "L" : x--; break;
case "R" : x++; break;
}
i++;
}
answer[0] = x; answer[1] = y;
return answer;
}
}
'코딩테스트 > Cos Pro 1급 Java' 카테고리의 다른 글
[Cos Pro 1급 java] [2차] 문제8) 규칙에 맞는 배열 구하기 (0) | 2021.03.16 |
---|---|
[Cos Pro 1급 java] [2차] 문제7) 거스름돈 구하기 - 탐욕법 문제(그리디 알고리즘) (0) | 2021.03.16 |
[Cos Pro 1급 java] [2차] 문제5) 언제까지 오르막길이야..?! (0) | 2021.03.16 |
[Cos Pro 1급 java] [2차] 문제4) 합이 k 배가 되는 수 (2) | 2021.03.16 |
[Cos Pro 1급 Java] [1차] 문제6) 체스의 나이트 (0) | 2021.03.15 |
댓글