• Codility lesson2_1 - CyclicRotation

    2021. 8. 14.

    by. 내이름은 킹햄찌

    안녕하세요.

    lesson1에 이어 두번째입니다.

    문제입니다.

    요약

    벡터 A와 정수 K를 input받아서 벡터 A의 원소를 K번 로테이션을 돌린 벡터를 output하는 문제입니다.

    로테이션 방법은 가장뒤의 원소를 첫번째 원소로 이동시키고 나머지 원소들을 뒤로 한칸씩 밀어 내는 절차가 1회 로테이션입니다. 물론 로테이션시 벡터 원소에 손실이 없어야합니다.  위에 숫자에 관련된 설명을 보시면 이해가 더 잘 될것같네요.

     

    아이디어

    1. 벡터를 입력받아서 로테이션을 돌려야한다고 판단했을때 C++의 벡터 메소드를 사용하면 된다고 판단

     

    코드

    vector<int> solution(vector<int> &A, int K) {
    	// write your code in C++14 (g++ 6.2.0)
    	vector<int>::iterator it;
    
    	if (A.empty())
    	{
    		return A:
    	}
    		
    
    	while (K--) {
    
    		it = A.begin();
    		A.insert(it, A.back());
    		A.pop_back();
    
    	}
    	return A;
    
    
    }

    결과는

    엥 87%입니다.

    codility에서는 어떤케이스에서 잘못되었는지 추론할 수 있게 알려주는데요.

     

    empty케이스네요. 비어있는 벡터를 받았을때 RunTime Error가 나온다고 하네요. 문제 설명에서 비어있는 경우는 없을 거라는 말이 없었는데 놓친것 같네요.

     

    사실 위의 코드에서 empty에 대한 처리를 하기 전의 코드로 제출을 한거고 이후에 추가를 해서 100% 확인했습니다.

     

    다음문제 풀어보도록 하겠습니다.

    '알고리즘 > Codility' 카테고리의 다른 글

    Codility lesson3_3 - TapeEquilibrium  (0) 2021.08.15
    Codility lesson3_2 - PermMissingElem  (0) 2021.08.15
    Codility lesson3_1 - FrogJmp  (0) 2021.08.15
    Codility lesson2_2 - OddOccurrencesInArray  (0) 2021.08.15
    Codility lesson1 - BinaryGap  (0) 2021.08.14

    댓글