[프로그래머스][C++] 나누어 떨어지는 숫자 배열
나누어 떨어지는 숫자 배열
문제 링크
분석
배열의 값에 접근 해 값이 나누어 떨어지는지 확인해 반환하는 문제입니다.
이때 반환 값이 오름차순으로 정렬된 상태로 반환되어야 합니다.
arr
을 나누기 전에 미리 정렬을 해주는 방법이 있습니다.
다른 방법으로 나누어 떨어지는 값을 저장한 후 정렬해주어 반환하는 방법이 있습니다.
풀이
나누기 전에 미리 정렬하고 푸는 방법은 다음과 같습니다.
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr, int divisor) {
vector<int> answer;
sort(arr.begin(), arr.end());
for (int i = 0; i < arr.size(); ++i)
{
if (arr[i] % divisor == 0)
{
answer.push_back(arr[i]);
}
}
if (answer.size() == 0)
{
answer.push_back(-1);
}
return answer;
}
나누어 떨어지는 값을 저장한 후 정렬해준 방법은 다음과 같습니다.
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr, int divisor) {
vector<int> answer;
for (int i = 0; i < arr.size(); ++i)
{
if (arr[i] % divisor == 0)
{
answer.push_back(arr[i]);
}
}
if (answer.size() == 0)
{
answer.push_back(-1);
}
sort(answer.begin(), answer.end());
return answer;
}
성능 요약
나누기 전에 미리 정렬한 성능은 다음과 같습니다.
테스트 1 〉 통과 (0.02ms, 4.16MB)
테스트 2 〉 통과 (0.02ms, 4.21MB)
테스트 3 〉 통과 (0.02ms, 4.21MB)
테스트 4 〉 통과 (0.02ms, 4.14MB)
테스트 5 〉 통과 (0.02ms, 4.2MB)
테스트 6 〉 통과 (5.05ms, 6.07MB)
테스트 7 〉 통과 (0.21ms, 4.14MB)
테스트 8 〉 통과 (0.01ms, 4.22MB)
테스트 9 〉 통과 (0.12ms, 4.2MB)
테스트 10 〉 통과 (0.12ms, 4.14MB)
테스트 11 〉 통과 (0.05ms, 4.16MB)
테스트 12 〉 통과 (0.05ms, 4.22MB)
테스트 13 〉 통과 (0.28ms, 4.21MB)
테스트 14 〉 통과 (0.14ms, 4.21MB)
테스트 15 〉 통과 (0.13ms, 4.21MB)
테스트 16 〉 통과 (0.04ms, 4.45MB)
나누어 떨어지는 값을 저장한 후 정렬한 성능은 다음과 같습니다.
테스트 1 〉 통과 (0.01ms, 4.19MB)
테스트 2 〉 통과 (0.01ms, 4.18MB)
테스트 3 〉 통과 (0.02ms, 4.19MB)
테스트 4 〉 통과 (0.01ms, 4.18MB)
테스트 5 〉 통과 (0.04ms, 3.7MB)
테스트 6 〉 통과 (0.62ms, 6.13MB)
테스트 7 〉 통과 (0.05ms, 4.22MB)
테스트 8 〉 통과 (0.01ms, 4.21MB)
테스트 9 〉 통과 (0.02ms, 4.21MB)
테스트 10 〉 통과 (0.06ms, 4.23MB)
테스트 11 〉 통과 (0.02ms, 3.72MB)
테스트 12 〉 통과 (0.02ms, 4.13MB)
테스트 13 〉 통과 (0.04ms, 4.2MB)
테스트 14 〉 통과 (0.04ms, 4.11MB)
테스트 15 〉 통과 (0.03ms, 4.45MB)
테스트 16 〉 통과 (0.02ms, 4.23MB)
댓글남기기