-
Lesson2 - CyclicRotation - with Array알고리즘/codility사이트 2021. 6. 26. 21:09
문제
input = vector <int> A, 회전 횟수 K
output = vector<int> target
A를 K만큼 회전시킨다음 A를 출력해라
풀이
굉장히 간단한 문젠데, 87% 정답률을 가졌다. => 최댓값만 신경 쓰느라 배열의 크기가 0의 값을 가지고 K값이 0일 수도 있다는 가정은 무시했다!
Analysis 중 하나 - 배열의 값들을 회전시키는 rotate함수를 만들어서 K만큼 호출시킨다.
- 임시 값을 저장하는 tmp변수 2개를 이용해서 각 배열에서 값들을 옮겨준다.
- A의 값을 계속해서 input으로 넣어줄 수 있었지만, 메모리를 생각해서 전역 변수로 target 배열 선언!
정답률 87% 코드
#include <iostream> #include <vector> using namespace std; vector<int> target; void rotate(){ int size = target.size(); int temp = target[size-1]; for(int i =0 ; i<size; i++){ int temp2 = target[i]; target[i] = temp; temp = temp2; } } vector<int> solution(vector<int> &A, int K) { // write your code in C++14 (g++ 6.2.0) target = A; //k번 회전 for(int i =0 ; i<K; i++){ rotate(); } return target; }
★ 다른 사이트와 다르게 당연히 input값이 이렇게 주어지겠지 생각하면 안 된다! 모든 경우를 생각하자.
★ 확장한 문제는 저글링 문제?이지 않을까
※ 아차 싶어서 수정하고 싶었지만 제출전에 수정 불가능하다고 pop up창이 뜬다.
LOOK OUT THE DISCRIPTION "ASSUME THAT"
'알고리즘 > codility사이트' 카테고리의 다른 글
Lesson3 - PermMissingElem - with Counting Sort (0) 2021.06.28 Lesson3 - FrogJmp (0) 2021.06.27 Lesson2 - OddOccurrencesInArray - with unordered_map (0) 2021.06.26 Lesson1 - Binary Gap - with Bit (0) 2021.06.26 codility에서 문제 풀어보기(short&fast project) (0) 2021.06.26