문제
https://school.programmers.co.kr/learn/courses/30/lessons/120844
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
오른쪽으로 회전하는 경우에는 현재 원소를 한 칸 뒤의 인덱스에 저장한다.
answer[(i + 1) % numbers.length] = numbers[i];
여기서 (i + 1) % numbers.length를 사용하면 마지막 원소도 자연스럽게 첫 번째 위치로 이동한다.
예를 들어 numbers = {1, 2, 3}이라면 다음과 같이 저장된다.
| i | 저장위치 | 결과 |
| 0 | 1 | answer[1] = 1 |
| 1 | 2 | answer[2] = 2 |
| 2 | 0 | answer[0] = 3 |
최종 결과는 {3, 1, 2}가 된다.
왼쪽으로 회전하는 경우에는 다음 위치의 값을 현재 위치에 저장한다.
answer[i] = numbers[(i + 1) % numbers.length];
마찬가지로 % 연산을 사용하기 때문에 마지막 인덱스에서는 자동으로 첫 번째 원소를 가져오게 된다.
예를 들어 numbers = {1, 2, 3}이라면 다음과 같이 저장된다.
| i | 가져오는 위치 | 결과 |
| 0 | 1 | answer[0] = 2 |
| 1 | 2 | answer[1] = 3 |
| 2 | 0 | answer[2] = 1 |
최종 결과는 {2, 3, 1}이 된다.
코드
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
for(int i=0;i<numbers.length;i++){
if(direction.equals("right")){
answer[(i+1)%numbers.length]=numbers[i];
}
else{
answer[i]=numbers[(i+1)%numbers.length];
}
}
return answer;
}
}'PS > Programmers' 카테고리의 다른 글
| [프로그래머스 Lv.0] 배열 자르기(Java) (0) | 2026.07.16 |
|---|---|
| [프로그래머스 Lv.0] 문자열 정렬하기 (2) (Java) (0) | 2026.07.15 |
| [프로그래머스 Lv.0] 2차원으로 만들기(Java) (0) | 2026.07.14 |
| [프로그래머스 Lv.0] 대문자와 소문자(Java) (0) | 2026.07.13 |
| [프로그래머스 Lv.0] 숨어있는 숫자의 덧셈 (1)(Java) (0) | 2026.07.12 |
댓글