C++ vector

노영현·2023년 3월 23일
0

2023 1학기 백준

목록 보기
2/7

C++ vector

작년 이후로 C++ 대신 파이썬만 쓰다보니 C++에 대한 기억이 많이 사라진 것 같아서 이번주에는 C++를 이용해 문제를 풀어보았다. C++에는 list 대신 vector라는 클래스를 제공하는데 아직 사용이 익숙치 않아 다시 공부하였다.

약수(1037번)

문제

양수 A가 N의 진짜 약수가 되려면, N이 A의 배수이고, A가 1과 N이 아니어야 한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.

코드

#include <bits/stdc++.h>
using namespace std;

int main(){
long long N;
vector<long long> input;
cin>>N;
for(int i=0;i<N;i++){
int a;
cin>>a;
input.push_back(a);
  }
sort(input.begin(),input.end());
if (N%2==0)
cout<<input[0]*input.back();
else
  cout<<input[(N-1)/2]*input[(N-1)/2];
}

해설

진짜 약수의 개수가 짝수일 경우 주어진 가장 작은 값과 큰 값을 곱하면 N을 구할 수 있고 홀수일 경우 중간값을 제곱하면 N을 구할 수 있다.
vector와 algorithm의 sort를 활용해서 입력받은 값을 정렬한 뒤 정답을 출력한다,

0개의 댓글