# 문제
배열이 주어지고 정수가 주어지면,
정수의 수 만큼 배열의 끝값을 앞으로 옮기고,
정리된 배열을 리턴하는 함수를 만들라는 것이다.
메게변수로는 A와 K가 주어진다.
A는 정수 배열이 넘어오고
K는 로테이션 횟수이다.
예를 들어
A = [3, 8, 9, 7, 6]
K = 3
가 주어지면 리턴 배열은
[9, 7, 6, 3, 8]
가 된다.
다른 수로 예를 들어보자.
K=5이라면
[3, 8, 9, 7, 6] -> [6, 3, 8, 9, 7]
[6, 3, 8, 9, 7] -> [7, 6, 3, 8, 9]
[7, 6, 3, 8, 9] -> [9, 7, 6, 3, 8]
이런식으로 나올테고
A = [0, 0, 0]
K = 1
라면 [0, 0, 0] 이 나올것이다.
A = [1, 2, 3, 4]
K = 4
라면 [1, 2, 3, 4]가 나올것이다.
# 소스코드
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 32 33 | class Solution { // A : 배열 // K : 이동할 배열 public int[] solution(int[] A, int K) { int[] result = (A.length > 0)? new int[A.length] : A; int index = 0; // 로테이션을 돌릴 필요가 없을때는 들어온 값을 그대로 리턴해준다. if((A.length % K) == 0 || (A.length <= 0)){ return A; }else{ // K가 배열의 길이보다 많을경우 최소한으로 반복문을 돌리기 위해 // K를 배열의 길이만큼 나누고 나머지 값만 가져온다. if(A.length < K){ K = K % A.length; } // 배열 정리 반복문 for(int i = (A.length - K); i <= (A.length - 1); i++){ result[index] = A[i]; index++; } // 배열 정리 반복문 for(int i = 0; i < (A.length - K); i++){ result[index] = A[i]; index++; } return result; } } } | cs |
# 마무리
위 포스트는 제가 직접 제작한 것 입니다.
그렇기 때문에 틀린점이나 설명이 엉성한 점이 존재할 수 있습니다.
만약 틀린점이나 설명이 엉성한 부분이 존재하면 댓글로 알려주세요.
빠른 처리 하도록 하겠습니다.
티스토리 앱으로는 댓글 이용이 불가능 하므로 웹 브라우저로 봐 주세요
(URL : http://junprogramer.tistory.com/)
읽어주셔서 감사합니다.
'잡다한 기술' 카테고리의 다른 글
[알고리즘]배열의 이어지는 인터벌 최대합 구하기 (0) | 2018.05.21 |
---|---|
우아한 형제들 1차 코딩 테스트 (0) | 2018.05.19 |
[코딜리티/Codility] OddOccurrencesInArray 문제 (0) | 2018.05.18 |
[코딜리티/Codility]이진 갭(Binary Gap) 알고리즘 (0) | 2018.05.15 |
[자바스크립트(javascript)]가장 기본적인 아이디 가져오는 방법 document.getElementById() (0) | 2018.03.28 |