Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 백준
- streamlit
- 백준20126
- 두 스티커
- export changeLog
- 백준 시간초과
- 교수님의 기말고사풀이
- LangChain
- 백준16937
- 백준1802
- Frog River One
- liquibse
- 백준13417
- generateChangeLog
- 백준17124
- 백준3078 풀이
- 백준11332
- java
- 백준2098
- 백준 도서관
- BaseCallbackHandler
- 외판원순회
- 백준1720
- streaming chat
- 백준 타일코드
- ChatOpenAI
- 백준3078
- 백준1461
- Codility
- 두 개의 배열
Archives
- Today
- Total
tempcru 삽질기록
Codility - Cyclic Rotation 풀이 (java8) 본문
문제 설명
- A[N] = {3, 8, 9, 7, 6}, K = 3 입력됐을때
- Return {9, 7, 6, 3, 8}
- K번 만큼 A 배열을 Shift (>>) 한다
- 배열의 마지막 수는 첫번째 수로 Shift 된다.
- 0 <= N, K <= 100
- -1000 <= A[i] <= 1000
주의점
- N이 0일 수 있다
- Shift 연산을 K번 만큼 수행하면 O(N*K) 의 시간복잡도가 나온다.
- A[i] = A[(i + N - K%N)%N] 하여O(N) 만에 연산을 끝낸다.
- N = 2 이고 K = 99일때 99번 shift 하는 것은 무의미하고 99%2 = 1 만큼만 shift 한다
- K%N = 0 이면 shift 안해도 된다.
풀이
public static int[] solution(int[] A, int K) {
// Init
int N = A.length;
// Pre-Condition
if(N == 0 || (K % N) == 0) {
return A;
}
// Logic
int[] result = new int[N];
for (int i = 0; i < N; i++) {
result[i] = A[(i + N - K%N) % N];
}
return result;
}
'Coding Test > Codility' 카테고리의 다른 글
[Codility] Lesson 4 - Frog River One 풀이 (java) (0) | 2022.01.06 |
---|---|
Codility - Binary Gap 풀이 (java8) (0) | 2022.01.05 |
Codility - Odd Occurrences In Array 풀이 (Java8) (0) | 2022.01.05 |
Codility - Frog Jmp 풀이 (java) (0) | 2022.01.05 |
Codility - Perm Missing Elem 풀이 (java) (0) | 2022.01.05 |