Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1037번- '약수' (PYTHON 풀이) 본문
문제:

오늘 문제는 약수와 관련된 문제이다.
약수의 개수에 맞게 입력받고, 해당 약수를 분석해서 이들 모두를 약수로 갖는 자연수를 맞추면 된다.
풀이:
C = int(input())
N = list(map(int,input().split()))
result = sorted(N)
if len(result) >= 2:
print(result[0]*result[-1])
else:
print(result[0]**2)
이번 문제는 정렬만 하면 되게 쉽게 풀 수 있다.
예를 들어, 자연수가 8이라면 약수로 2,4가 입력될 것이다. (문제에 1과 자연수 N은 제외라고 나와있으니)
또는 24라면 3,4,2,12,6,8이 입력될 것이다. 여기서 3*8, 4*6 이런식으로 곱해보면 24가 나오니까 이를 유추해서 자연수를 맞출 수도 있다. 만약 사용자가 이러한 루틴대로 수를 입력한다고 치면 필자가 작성한 코드의 첫번째 print문처럼 끝과 끝자리를 곱해서 출력만 하면 맞을 것이다.
하지만 예제 입력 4와 같이 중구난방으로 입력한다고 가정할 경우, 위처럼 작성 시 틀릴 것이다. 그러니까 정렬을 통해서 오름차순으로 만들고 여기서 가장 작은 수와 가장 큰 수를 곱하면 자연수를 찾을 수 있으니 안전하게 이를 활용해서 코드를 작성하였다.
추가로, 예제 입력 2와 같이 개수가 1개일 경우는 제곱수이니까 해당 값에서 제곱한 수를 출력함으로써 문제를 풀 수 있다.
'CODING 💻' 카테고리의 다른 글
| 백준 2108번- '통계학' (PYTHON 풀이) (0) | 2025.11.05 |
|---|---|
| 백준 20920번- '영단어 암기는 괴로워' (PYTHON 풀이) (0) | 2025.11.04 |
| 백준 25192번- '인사성 밝은 곰곰이' (PYTHON 풀이) (1) | 2025.11.02 |
| 백준 1010번- '다리 놓기' (PYTHON 풀이) (0) | 2025.11.01 |
| 백준 24723번- '녹색거탑' (PYTHON 풀이) (0) | 2025.10.31 |
