[BOJ] 1037 약수

GirlFriend-Yerin·2020년 8월 27일
0

알고리즘

목록 보기
106/131

Note

N의 n개 진짜 약수가 주어질 때 N을 구하는 프로그램을 만들자

N의 약수중 1과 N이 아닌 약수를 진짜 약수라고 한다.
n이 홀수 일 떄와 짝수일 때가 있는데 홀수일 경우는 N이 제곱수이다.
N을 구하기 위해서는 최대 값과 최소 값만 알면 상관이 없지만, 이번 문제에서는 정렬을 이용해 최대/최소 값을 구하거나 중앙값을 구하는 방법을 사용했다.

알고리즘

  1. n개의 수를 입력 받는다.
  2. n개의 수를 오름차순으로 정렬한다.
  3. n이 홀수인 경우 중앙값을 제곱해 출력하고, 짝수인 경우 최대값과 최소값을 곱해 출력한다.

소스결과

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

const short MAX = 50;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);

	int count;
	int res = 0;
	vector<int> childList;
	cin >> count;
	
	childList.resize(count);

	for (int i = 0; i < count; i++)
		cin >> childList[i];

	sort(childList.begin(), childList.end());

	if (count % 2)
		res = childList[count / 2] * childList[count / 2];
	else
		res = childList[0] * childList[count-1];

	cout << res;

	return 0;
}

2019-03-31 23:24:20에 Tistory에서 작성되었습니다.

profile
개발할때 가장 행복한 개발자입니다.

0개의 댓글