Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- jvm이란
- rxjava cold observable
- android retrofit login
- ar vr 차이
- android ar 개발
- jvm 작동 원리
- 스택 큐 차이
- 클래스
- Rxjava Observable
- 자바 다형성
- 2022 플러터 설치
- 안드로이드 라이선스
- 안드로이드 레트로핏 crud
- 안드로이드 레트로핏 사용법
- ANR이란
- 객체
- rxjava hot observable
- 스택 자바 코드
- 안드로이드 유닛 테스트 예시
- 멤버변수
- 플러터 설치 2022
- 2022 플러터 안드로이드 스튜디오
- rxjava disposable
- 안드로이드 라이선스 종류
- 안드로이드 os 구조
- 안드로이드 유닛 테스트
- 안드로이드 유닛테스트란
- 서비스 쓰레드 차이
- 큐 자바 코드
- 서비스 vs 쓰레드
Archives
- Today
- Total
나만을 위한 블로그
[Algorithm] 프로그래머스 - 배열 회전시키기 (Kotlin) 본문
728x90
반응형
정수가 담긴 배열 numbers, 문자열 direction이 매개변수로 주어진다
배열 numbers의 원소를 direction 방향으로 한 칸씩 회전시킨 배열을 리턴하는 solution()을 완성하라
처음에는 배열의 0번 원소를 맨 뒤로 보내느니 마니 하는 로직을 생각했었지만 코틀린이니까 뭔가 간단히 만들어 둔 함수가 없을까 해서 찾아봤더니 있었다. 바로 rotate()다. Collections에 속하기 때문에 import문을 꼭 써줘야 한다.
import java.util.Collections
class Solution {
fun solution(numbers: IntArray, direction: String): IntArray {
val aList = numbers.toList()
if (direction == "right") {
Collections.rotate(aList, 1)
} else {
Collections.rotate(aList, -1)
}
return aList.toIntArray()
}
}
이렇게 써서 제출했더니 통과됐다. rotate()의 설명과 원형은 아래와 같다.
이 함수는 자바로 작성돼 있어서 함수 설명은 오라클 문서의 rotate() 설명부로 이동해야 확인할 수 있다. 아래 링크로 이동해 Ctrl + F로 rotate를 찾으면 바로 이동할 수 있다.
https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#rotate(java.util.List,%20int)
Collections (Java Platform SE 7 )
Rotates the elements in the specified list by the specified distance. After calling this method, the element at index i will be the element previously at index (i - distance) mod list.size(), for all values of i between 0 and list.size()-1, inclusive. (Thi
docs.oracle.com
지정된 리스트의 요소를 지정된 거리(distance)만큼 회전한다. 이 메서드를 호출한 후 인덱스 i에 있는 요소는 0과 list.size() - 1 사이의 모든 i값에 대해 이전의 인덱스(i - distance) mod list.size()에 있는 요소가 된다. 이 메서드는 리스트 크기에 영향을 주지 않는다
예를 들어 리스트가 [t, a, n, k, s]로 구성됐다고 가정한다. Collections.rotate(list, 1) 또는 Collections.rotate(list, -4)를 호출하면 list는 [s, t, a, n, k]로 구성된다. 이 메서드는 나머지 요소의 순서를 유지하면서 리스트 안에서 하나의 요소를 이동하기 위해 하위 리스트에 유용하게 적용될 수 있다. 예를 들어 다음 관용구는 인덱스 j의 요소를 위치 k(j보다 크거나 같아야 함)로 이동한다
Collections.rotate(list.sublist(j, k+1), -1)
리스트가 [a, b, c, d, e]로 구성됐다고 가정한다. 인덱스 1의 요소(b)를 두 위치 앞으로 이동하려면 아래 코드를 사용한다.
Collections.rotate(list.subList(1, 4), -1)
결과로 얻는 리스트는 [a, c, d, b, e]다. 둘 이상의 요소를 앞으로 이동하려면 회전 거리의 절대값을 늘린다. 요소를 뒤로 이동시킬면 양수 이동 거리를 사용하라...(중략)
< 매개변수 >
distance : 리스트를 회전할 거리. 이 값에는 제한이 없다. 0, 음수 또는 list.size()보다 클 수 있다
public static void rotate(List<?> list, int distance) {
if (list instanceof RandomAccess || list.size() < ROTATE_THRESHOLD)
rotate1(list, distance);
else
rotate2(list, distance);
}
반응형
'알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 합성수 찾기 (Kotlin) (0) | 2022.12.28 |
---|---|
[Algorithm] 프로그래머스 - 주사위의 개수 (Kotlin) (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 공 던지기 (Kotlin) (0) | 2022.12.27 |
[Algorithm] 프로그래머스 - 2차원으로 만들기 (Kotlin) (0) | 2022.12.27 |
[Algorithm] 프로그래머스 - 점의 위치 구하기 (Kotlin) (0) | 2022.12.27 |
Comments