728x90
반응형
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
입출력 예
arr | divisor | return |
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
문제풀이
#include <string>
#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]);
}
}
//답 배열이 비어있으면 -1을 삽입
if(answer.empty()){
answer.push_back(-1);
}
return answer;
}
C++ 풀이 과정: 배열에서 나누어 떨어지는 값 찾기
1. 입력 배열 정렬
sort(arr.begin(), arr.end());
먼저, 배열을 오름차순으로 정렬합니다. 이를 통해 나누어 떨어지는 값들이 결과로 반환될 때 자동으로 오름차순 정렬 상태를 유지합니다.
std::sort
함수는arr.begin()
에서arr.end()
까지의 범위를 오름차순으로 정렬합니다.- 시간 복잡도는
O(nlogn)
입니다.
2. 나누어 떨어지는 값 확인
for (int i = 0; i < arr.size(); i++) {
if (arr[i] % divisor == 0) {
answer.push_back(arr[i]);
}
}
for
루프를 사용하여 배열의 각 요소를 확인하고, divisor
로 나누어 떨어지는지 검사합니다.
arr[i] % divisor == 0
: 나머지가 0이라면 나누어 떨어진다는 의미입니다.- 조건을 만족하는 경우,
answer
벡터에 해당 값을 추가합니다.
3. 결과 처리
if (answer.empty()) {
answer.push_back(-1);
}
만약 answer
벡터가 비어 있다면, 즉, 나누어 떨어지는 값이 없다면 -1
을 추가합니다.
answer.empty()
:answer
벡터가 비었는지 확인하는 STL 함수입니다.
마지막으로, 정답 벡터 answer
를 반환합니다.
728x90
반응형
'프로그래머스 풀이' 카테고리의 다른 글
[c++][PCCP 기출문제] 퍼즐 게임 챌린지 (0) | 2025.01.08 |
---|---|
[SQL] 대장균의 크기에 따라 분류하기 1 (2) | 2025.01.03 |
[c++]핸드폰 번호가리기 (0) | 2024.12.06 |
[c++]부족한 금액 계산하기 (0) | 2024.12.03 |
[c++][javascript]아이스아메리카노 (0) | 2024.11.28 |