728x90
class Solution {
public int[] solution(int[] numbers, String direction) {
int tmp = 0;
if(direction.equals("right")){
tmp = numbers[numbers.length-1];
for(int i=numbers.length-2; i>=0; i--){
numbers[i+1] = numbers[i];
}
numbers[0] = tmp;
}else{
tmp = numbers[0];
for(int i=0; i<numbers.length-1; i++){
numbers[i] = numbers[i+1];
}
numbers[numbers.length-1] = tmp;
}
return numbers;
}
}
direction이 right이면 오른쪽으로 한 칸씩, left이면 왼쪽으로 한칸 씩 이동시켜야 한다.
right일 때 배열의 가장 뒤에 있는 값을 앞으로 옮기고
left일 때 앞에 있는 값을 배열의 가장 뒤로 옮기기 위해서 tmp변수를 사용했다.
방향에 따라 뒤에서부터 옮길지 앞에서부터 옮길지 주의해야한다.
right일 때
[ 1, 2, 4 ] > [ 4, 1, 2 ] 가 되야하지만
앞에서 부터 옮기면
[ 1, 2, 4] > [ 1, 1, 4 ] > [ 1, 1, 1 ] > [ 4, 1, 1 ] 이 된다.
1번째 인덱스를 2번째 인덱스에 넣을 때 이미 변경된 값을 넣게되기 때문이다.
따라서 right의 경우 뒤에서 부터 앞으로 한 칸씩 이동시켜주면 된다.
반응형
'CodingTest > Programmers' 카테고리의 다른 글
| [프로그래머스] Lv.0 외계행성의 나이 (0) | 2022.11.28 |
|---|---|
| [프로그래머스] Lv.0 인덱스 바꾸기 (0) | 2022.11.28 |
| [프로그래머스] Lv.0 암호 해독 (0) | 2022.11.28 |
| [프로그래머스] Lv.0 주사위의 개수 (0) | 2022.11.28 |
| [프로그래머스] Lv.0 약수 구하기 (0) | 2022.11.28 |
댓글