[C++] 백준 1037 - 약수

2022. 6. 1. 23:54· CodingTest/Baekjoon
목차
  1. 문제
  2. 입력
  3. 문제 해석 
  4. 코드

문제

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

 

입력

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되지 않는다.

출력

첫째 줄에 N을 출력한다. N은 항상 32비트 부호있는 정수로 표현할 수 있다.

예제 입력 1 

2
4 2

예제 출력 1 

8

예제 입력 2 

1
2

예제 출력 2 

4

예제 입력 3 

6
3 4 2 12 6 8
 

예제 출력 3 

24

예제 입력 4 

14
14 26456 2 28 13228 3307 7 23149 8 6614 46298 56 4 92596

예제 출력 4 

185192

 

문제 해석 

  1. 약수의 개수가 주어진다.
    1. 그 약수의 개수는 자기자신과 1을 제외한 약수의 개수이다.
  2. 약수가 무작위 순서대로 주어진다.
    1. 오름차순으로 깔끔하게 정렬한다.
    2. 그러면 젤 첫원소와 마지막 원소를 곱하면 우리가 찾으려는 N을 구할 수 있다.
  3. 만약 약수의 개수가 1개 일 때
    1. 예를 들어 9,25 등등
      1. 그 약수를 제곱하면  N이 나온다.

코드

/*
약수 구하기
양수 A가 N의 진짜 약수가 되려면 N이 A의 배수이고, A가 1과 N이 아니어야한다. 어떤 수 N의 진짜 약수가 모두 주어질 때, N을 구하는 프로그램을 작성하시오.
첫째줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 중복되지 않는다.
*/
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int com(int i, int j)
{
return i < j;
}
int main()
{
int n, result;
cin >> n;
vector<int> num;
for (int i = 0; i < n; i++)
{
int N;
cin >> N;
num.push_back(N);
}
//입력 받은 num을 오름차순으로 정렬
sort(num.begin(), num.end(), com);
if (num.size() != 1) //
{
result = num[0] * num[num.size() - 1];
}
else
{ //약수의 개수가 홀 수라면
result = num[0] * num[0];
}
cout << result;
}

 

느낀 점

계산 복잡도와 adversary 전략이랑 관련이 있다고 해서 풀어봤는데 크게 못 느끼겠다.

https://www.acmicpc.net/problem/1037

 

1037번: 약수

첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되

www.acmicpc.net

 

저작자표시 (새창열림)

'CodingTest > Baekjoon' 카테고리의 다른 글

[백준 1929]-소수구하기(C++)  (0) 2022.06.09
[백준 7450] Bin Packing (C++)  (0) 2022.06.09
[C++] 백준 1978 - 소수 찾기  (0) 2022.06.01
[백준 C++] 1003 (피보나치 함수)  (0) 2022.05.03
백준[C++]- 2667 단지 번호 붙이기  (0) 2022.05.02
  1. 문제
  2. 입력
  3. 문제 해석 
  4. 코드
'CodingTest/Baekjoon' 카테고리의 다른 글
  • [백준 7450] Bin Packing (C++)
  • [C++] 백준 1978 - 소수 찾기
  • [백준 C++] 1003 (피보나치 함수)
  • 백준[C++]- 2667 단지 번호 붙이기
재한
재한
안녕하세요 💻
재한
짜이한
전체
오늘
어제
  • 분류 전체보기 (504)
    • Skils (118)
      • Android (52)
      • C++ (5)
      • Kotlin (36)
      • Algorithm (24)
      • Server (1)
    • CodingTest (228)
      • Programmers (45)
      • Baekjoon (183)
    • Experience (8)
      • 후기(코딩테스트,프로그램,프로젝트) (8)
    • Computer Science (70)
      • Design Pattern (2)
      • OOP (2)
      • Computer Architecture (14)
      • OS (2)
      • Software Engineering (3)
      • DataBase (8)
      • Network (39)
    • 학교 (75)
      • R프로그래밍 (26)
      • 회계와 사회생활 (17)
      • 컴퓨터학개론 (20)
      • it기술경영개론 (12)

블로그 메뉴

  • 홈
  • 태그
  • 카테고리
  • 글쓰기
  • 설정

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
재한
[C++] 백준 1037 - 약수
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.