반응형
배열 회전시키기 (JAVA)
0. 문제 및 입출력 예제
문제
정수가 담긴 배열 numbers와 문자열 direction가 매개변수로 주어집니다.
배열 numbers의 원소를 direction방향으로 한 칸씩 회전시킨 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 3 ≤ numbers의 길이 ≤ 20
- direction은 "left" 와 "right" 둘 중 하나입니다.
입출력 예
- 입출력 예 #1
numbers 가 [1, 2, 3]이고 direction이 "right" 이므로 오른쪽으로 한 칸씩 회전시킨 [3, 1, 2]를 return합니다.
- 입출력 예 #2
numbers 가 [4, 455, 6, 4, -1, 45, 6]이고 direction이 "left" 이므로 왼쪽으로 한 칸씩 회전시킨 [455, 6, 4, -1, 45, 6, 4]를 return합니다.
1. 문제 분석
문제를 보면 direction 이 left 와 right 둘 중 하나라고 나와있다.
그렇다면 left 와 right 로만 분기처리하면 될 것 같다.
그리고 direction 방향으로 한칸씩 회전시켜 return 하면 된다..
정리해보자면,
right 일 경우에는 배열의 last index 를 first index 로 옮겨주면 되고,
left 일 경우에는 배열의 first index 를 last index 로 옮겨주면 된다.
👉🏻 right 일 경우
✅ 순서 정리
2. 방법
정말... 배열.... 푸느라 생각보다 오래걸렸다
어떻게 풀어야할지는 알았지만 코드로 작성하다보니 1부터 10까지 직접 손으로 쓰다보니 조금 헷갈렸던 것 같다..
class Solution {
public int[] solution(int[] numbers, String direction) {
if (direction.equals("right")) {
int temp = numbers[numbers.length - 1];
for (int i = numbers.length - 2; i >= 0; i--) {
numbers[i + 1] = numbers[i];
}
numbers[0] = temp;
return numbers;
} else {
int temp = numbers[0];
for (int i = 0; i <= numbers.length - 2; i++) {
numbers[i] = numbers[i + 1];
}
numbers[numbers.length - 1] = temp;
return numbers;
}
}
}
3. 느낀점
이번 문제를 풀면서 느낀점은 점점 효율적인 사고방식과 방법을 생각해봐야 될 것 같다는 생각을 하게되었다.
다른 사람들의 풀이도 보다보니 점점 더 내 코드가 너무 단순하게 구현된건 아닌가 싶었다..😿
그래도 알고리즘을 공부하면서 java 기본 문법이나 메모리에 대해서 공부할 수 있어서 점점 재미가 붙는 것 같아서 다행이다 ㅎㅎ
반응형
'알고리즘 > 프로그래머스:LV00' 카테고리의 다른 글
[LV 00] 합성수 찾기 (0) | 2023.10.26 |
---|---|
[LV00] 점의 위치 구하기 (0) | 2023.06.19 |
[LV00] 공 던지기 (1) | 2023.06.19 |
[LV00] 구슬을 나누는 경우의 수 (0) | 2023.06.19 |
[LV00] 구슬을 나누는 경우의 수 (0) | 2023.05.09 |