<문제 설명>
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수
solution을 완성해 보세요. 배열의 맨 앞에 최대공약수,
그다음 최소공배수를 넣어 반환하면 됩니다.
예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로
solution(3, 12)는 [3, 12]를 반환해야 합니다.
<제한 사항>
두 수는 1이상 1000000이하의 자연수입니다.
<입출력 예>
n m return
3 12 [3, 12]
2 5 [1, 10]
<입출력 예 설명>
- 입출력 예 #1
위의 설명과 같습니다.
- 입출력 예 #2
자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int n, int m) {
vector<int> answer;
for (int i = m; i > 0; i--) { //최대공약수
if ((n % i == 0) && (m % i == 0)) {
answer.push_back(i);
}
}
if (answer.size() >= 2) { //공약수가 여러 개라면...
answer.erase(answer.begin() + 1, answer.end()); //최대공약수 하나만 남기고 삭제
}
answer.push_back(answer[0]*(n/answer[0])*(m/answer[0])); //최소공배수
return answer;
}
gcd 함수 없이 순정식으로 구현해보기 후후...
<문제 설명>
정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수,
solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔
배열에 -1을 채워 리턴하세요. 예를 들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고,
[10]면 [-1]을 리턴 합니다.
<제한 조건>
arr은 길이 1 이상인 배열입니다.
인덱스 i, j에 대해 i ≠ j이면 arr[i] ≠ arr[j] 입니다.
<입출력 예>
arr return
[4,3,2,1] [4,3,2]
[10] [-1]
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> arr) {
int min_idx = min_element(arr.begin(), arr.end()) - arr.begin();
arr.erase(arr.begin() + min_idx);
if (arr.size() == 0) {
arr.push_back(-1);
}
return arr;
}
algorithm 헤더 안에 배열의 최솟값 인덱스를 구해주는 min_element 함수가 있음을 기억하자!!!
그리고 최솟값 인덱스를 구할때 왜 배열의 시작을 빼냐면... min_element가 반환하는 값은 실제 값이 아닌 이터레이터이기 때문이다..!!! 따라서 이때 인덱스가 아니라 실제 값을 참고할려면 *min_element 이런 식으로 * 붙이기!!
[C++] min, max, min_element, max_element 사용법 총정리 최대값 최소값 array vector algorithm #define NOMINMAX
소프트웨어 개발을 하다보면 값을 비교하여 최대값, 최소값을 찾거나 array, vector 등 객체에서 최대값, ...
blog.naver.com
이곳에 자세히 설명되어 있어 참고할려고 가져왔당
'C++ Programmers Test > Level 1' 카테고리의 다른 글
[Programmers] [C++] 콜라츠 추측 / 푸드 파이트 대회 (0) | 2025.01.08 |
---|---|
[Programmers] [C++] 정수 제곱근 판별 / 나누어 떨어지는 숫자 배열 (0) | 2025.01.04 |
[Programmers] [C++] 추억 점수 / 숫자 문자열과 영단어 (0) | 2024.12.31 |
[Programmers] [C++] 음양 더하기 / 하샤드 수 (0) | 2024.12.30 |
[Programmers] [C++] 행렬의 덧셈 / 같은 숫자는 싫어 (1) | 2024.12.02 |