문제 (구현)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
문제에 나온대로 명령어 4개에 따른 이동값을 분기별로 처리해주었다.
R : 오른쪽 90도 회전
L : 왼쪽 90도 회전
G : 한칸 전진
B : 한칸 후진
기본 세팅값은 direction = 0, (0,0) 위치이고 G와 B의 이동 수식은 배열을 이용하였다.
G기준일 때 방향에 따라 아래와 같이 움직이고, B은 반대이므로 *-1 해주면서 그대로 배열을 사용했다.
direction [0] [1] [2] [3]
dx = {0, 1, 0, -1}
dy = {1, 0, -1, 0}
소스 코드
class Solution {
public int[] solution(String command) {
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
int[] answer = new int[2];
int x = 0, y = 0, direction = 0;
for(int i = 0; i < command.length(); i++){
char cmd = command.charAt(i);
if(cmd == 'G'){
x += dx[direction];
y += dy[direction];
}
else if(cmd == 'B'){
x += dx[direction] * -1;
y += dy[direction] * -1;
}
else if(cmd == 'L'){
if(direction == 0) direction = 3;
else direction -= 1;
}
else if(cmd == 'R'){
if(direction == 3) direction = 0;
else direction += 1;
}
}
answer[0] = x;
answer[1] = y;
return answer;
}
}
'Algorithm > Programmers' 카테고리의 다른 글
[PCCP모의고사2] 3번 카페 확장 JAVA (0) | 2024.02.19 |
---|---|
[PCCP모의고사2] 2번 신입사원 교육 JAVA (0) | 2024.02.19 |
[프로그래머스] 행렬 테두리 회전하기 자바 (1) | 2022.10.05 |
[프로그래머스] 보석 쇼핑 자바 (0) | 2022.04.25 |
[프로그래머스] 자물쇠와 열쇠 자바 (0) | 2022.03.08 |