문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
문제 유형
- 배열 필터링
- 정렬
의사코드
- priorty queue 자료형인 변수(pq)를 선언한다.
- [반복문] array.size()만큼 반복한다.
- 만약 array의 요소가 나누어 떨어진다면
- pq에 요소를 담는다.
- 만약 array의 요소가 나누어 떨어진다면
- 만약 pq의 사이즈가 0이라면 배열에 -1을 담는다.
- 그렇지 않다면 pq의 요소를 배열에 담는다.
- 배열을 반환한다.
코드 작성
vector<int> solution(vector<int> arr, int divisor) {
vector<int> result;
priority_queue<int, vector<int>, greater<int>> pq;
for (int num : arr)
{
if (num % divisor == 0)
pq.push(num);
}
if (pq.size())
{
while (!pq.empty())
{
int num = pq.top();
pq.pop();
result.push_back(num);
}
}
else
{
result.push_back(-1);
}
return result;
}
다른 풀이 비교
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]);
}
return answer.empty() ? vector<int>(1, -1) : answer;
}
- 내 코드는 탐색 > 필터 > 저장(정렬) > 체크 > 다른 자료형으로 저장 > 반환
- 위 코드는 정렬 > 탐색 > 필터 > 저장 > 체크 > 반환
'Algorithm > Practice' 카테고리의 다른 글
| [Algorithm] 수박수박수박수박수박수? (0) | 2024.12.16 |
|---|---|
| [Algorithm] 가운데 글자 가져오기 (1) | 2024.12.14 |
| [Algorithm] 서울에서 김서방 찾기 (0) | 2024.12.14 |
| [Algorithm] 없는 숫자 더하기 (2) | 2024.12.13 |
| [Algorithm] 핸드폰 번호 가리기 (1) | 2024.12.13 |