728x90
반응형
[프로그래머스] 코딩테스트 연습 -> 코딩테스트 입문 -> 배열 회전시키기
https://school.programmers.co.kr/learn/courses/30/lessons/120844
해결 과정
이 문제 역시 규칙을 찾아보겠다.
[3,1,2] right 의 경우 [2,3,1] 이 된다.
answer[0]이 numbers[1] 이 되고
answer[1]이 numbers[2] 이 되고
answer[2]은 numbers[0]이 된다.
i를 하나씩 감소시켜 배열 answer에 넣어주면 answer[i] = numbers[i-1] 이 되고 다만 i 가 0이 되면
answer[0] == numbers[numbers.length-1]이 되게 해준다
[3,1,2] left 의 경우 [1,2,3] 이 된다.
answer[0]이 numbers[2] 이 되고
answer[1]이 numbers[0] 이 되고
answer[2]은 numbers[1]이 된다.
그렇게 right일때와 그 외(left)로 조건을 나눈 뒤
알맞게 반복문을 지정하여 풀어주면 된다.
* 이때 right 문자열을 비교할 때에는 == 를 사용하면 안된다.
direction.equals("right")를 이용해 줘야 한다.
==는 객체가 같은지(객체의 Hashcode)를 비교하지만 객체가 갖고 있는 문자열이 같은지 비교하지 않는다.
(참고 링크)
https://codechacha.com/ko/java-string-compare/
소스 코드
class Solution {
public int[] solution(int[] numbers, String direction) {
int[] answer = new int[numbers.length];
if (direction.equals("right")) {
for (int i = numbers.length-1; i >= 0 ; i--) {
if (i == 0) {
answer[0] = numbers[numbers.length-1];
break;
}
answer[i] = numbers[i-1];
}
} else {
for (int i = 0; i < numbers.length; i++) {
if (i == numbers.length-1) {
answer[numbers.length-1] = numbers[0];
break;
}
answer[i] = numbers[i+1];
}
}
return answer;
}
}
728x90
반응형
'JAVA > Programmers' 카테고리의 다른 글
JAVA 프로그래머스 [합성수 찾기] 자바 Lv.0 (0) | 2023.06.01 |
---|---|
JAVA 프로그래머스 [공 던지기] 자바 Lv.0 (0) | 2023.05.31 |
JAVA 프로그래머스 [점의 위치 구하기] 자바 (0) | 2023.05.31 |
JAVA 프로그래머스 [2차원으로 만들기] 자바 (0) | 2023.05.31 |
JAVA 프로그래머스 [가위 바위 보] 자바 Lv.0 (0) | 2023.05.30 |
댓글