[코딜리티] codility Lesson 2 Arrays - CyclicRotation 87%

문제.
Programming language: 
A zero-indexed array A consisting of N integers is given. Rotation of the array means that each element is shifted right by one index, and the last element of the array is also moved to the first place.
For example, the rotation of array A = [3, 8, 9, 7, 6] is [6, 3, 8, 9, 7]. The goal is to rotate array A K times; that is, each element of A will be shifted to the right by K indexes.
Write a function:
struct Results solution(int A[], int N, int K);
that, given a zero-indexed array A consisting of N integers and an integer K, returns the array A rotated K times.
For example, given array A = [3, 8, 9, 7, 6] and K = 3, the function should return [9, 7, 6, 3, 8].
Assume that:
  • N and K are integers within the range [0..100];
  • each element of array A is an integer within the range [−1,000..1,000].
In your solution, focus on correctness. The performance of your solution will not be the focus of the assessment.
Copyright 2009–2017 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.



풀이.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
    public int[] solution(int[] A, int K) {
        // write your code in Java SE 8
        if(A.length == 0 || K == 0return A;
        if(A.length%K == 0 && K != 1return A;
        
        forint c = 0 ; c < K ; c++){
            int tmp = A[A.length-1];
            forint i = A.length-1 ; i > 0 ; i--) A[i] = A[i-1];
            A[0= tmp;
        }
         return A;
    }
}
cs


설명.

입력값 k 의 횟수만큼 배열의 마지막 값을 빼서 처음에 집어 넣기.

요구사항에 충실하게 만들어 보았다.
위의 두가지 검사항목은 100%를 달성하기 위해 추가로 넣었다. 아직 달성하진 못하였고 완전히 개선해야 겠다.

사실 연산속도를 올리기 위한 더 좋은 방식이 있지만. 요구사항 을 그대로, 다시 말해 말하는 문장을 프로그램으로 표현 하는 것에 중점을 두었다.

왜냐하면, 실무가 그렇기 때문이다.
실제 비지니스 로직은 대부분 모든것을 고려하지 못한채 말과 단편적인 아이디어 들로 많이 설계되거나 기획 된다.

그것을 그대로 구현할 수 있어야 그것이 잘 구현되었을 때 기획 과 설계의 오류를 잡아 낼수 있다고 생각한다.

내가 네거티브 코딩을 하는 이유도 그렇다.
기획 과 설계는 보통 100가지 위험한 문제를 모두 덮어놓고 1가지 평범하고 상식적이고 쉬운 길 만을 택한다.

그리고 프로그래머가 태클을 걸면 그럴일 별로 없다 라던가 그게 말이 되나요? 그런일 상식적으로 발생 안합니다. 식의 반응이 돌아온다.

프로그래머는 돈을 많이 받아야 한다.
"버튼을 누르면 결제가 되면 된다."
이 문구가 엉터리인 100가지 이유를 찾아서 프로그램을 만들어야 하니깐. 낄낄ㅋ

마지막에 좀 솔직해져 보자.
아오~! 내가 꼭 100% 달성을 해야만 하는 고야? 걍 이걸로 만족해주면 안되겠니?

아니 그리고 1번 수행하는 것과 100번의 사이클 후 1번 수행 하는 것 은  시간차이가 발생하는게 좋을 수도 있잔엉.

그래 고집부리고 있는거 맞어. 코딜리티의 검사 항목이 마음에 안드는 것이고 내가 짠 코드를 바꿔 버리고 싶지도 않은거지...

이건 그냥 퀴즈 잔아? 난 내 프로그램에 만족한다고! ㅋ

댓글

이 블로그의 인기 게시물

[코딜리티] codility lesson 5 Frefix Sums - MinAvgTwoSlice 100%

구글 블로그 ( blogspot ) 라벨 위젯 을 카테고리 처럼 만들기

[코딜리티] codility lesson 7 Stacks and Queues - StoneWall 100%