ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [codility] PermCheck c++
    Coding Test/codility 2022. 4. 9. 21:32
    728x90
    • 문제

    permutation(순열) 인지 체크하는 문제이다.

     

     

    • 문제 해결

    처음에 생각한 풀이는 75%가 나왔다.

    1. A배열의 합 구하기

    2. A배열의 크기로 A.size() 일 때 순열의 합 구하기

    3. 1,2 비교하기

    #include <string>
    #include <algorithm>
    #include <vector>
    #include <iostream>
    #include <numeric>
    
    int solution3(std::vector<int> &A) {
    
    	int len = A.size()+1;
    	long sumP = len * (len + 1) / 2;
    	long sumA = std::accumulate(A.begin(), A.end(), 0);
    
    	if (sumP != sumA)
    		return 0;
    
    	return 1;
    }
    
    #define PermCheck  
    
    #ifdef PermCheck  
    
    int main() {
    
    	std::vector<int> nVec = {4,1,3,2};
    	std::cout << solution3(nVec);
    
    	return 0;
    }
    #endif

    다른 방법을 생각했다.

    내가 어렵게 생각한거 같다.

    오히려 쉽게 반복문으로 하니 100%가 나왔다...! 

    #include <string>
    #include <algorithm>
    #include <vector>
    #include <numeric>
    
    #include <iostream>
    
    int solution(std::vector<int> &A) {
    
    	sort(A.begin(), A.end());
    
    	for (int i = 1; i <= A.size(); i++) {
    		if (A.at(i - 1) != i)
    			return 0;
    	}
    
    	return 1;
    }
    
    #define PermCheck  
    
    #ifdef PermCheck  
    
    int main() {
    
    	std::vector<int> nVec = {4,1,3,2};
    	std::cout << solution4(nVec);
    
    	return 0;
    }
    #endif

    728x90

    'Coding Test > codility' 카테고리의 다른 글

    [codility] MaxCounters c++  (0) 2022.04.10
    [codility] MaxCounters c++  (0) 2022.04.10
    [codility] FrogRiverOne c++  (0) 2022.04.09
    [codility] TapeEquilibrium c++  (0) 2022.04.09
    [codility] PermMissingElem c++  (0) 2022.04.09

    댓글

© 2022. code-space ALL RIGHTS RESERVED.