Coding Test/codility
[codility] PermCheck c++
owls
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