Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 1978번 - 소수 찾기 (PYTHON 풀이) 본문
문제:

약수가 자기 자신과 1, 이렇게 두개뿐인걸 소수라고 하는데 해당 문제는 소수의 개수를 찾는 코드를 작성하는 문제이다.
최근 푼 문제 중에 가장 헷갈렸다.. (너무 어렵게 생각했기 때문....)
풀이:
a=int(input())
k=[]
count=0
n=input().split()
for i in range(a):
k.append(int(n[i]))
for j in k:
num=0
for q in range(1, j+1):
if j % q == 0:
num+=1
if num == 2:
count+=1
print(count)
코드는 위와 같다. 우선 문제의 핵심은 소수를 정의하는 부분이다. 소수의 의미는 앞서 말한 것처럼 자기 자신과 1 ,이렇게 두개만 약수로 취하는 것을 의미한다. 근데 이 부분을 정의하는 코드에서 너무 어렵게 생각하는 바람에 1부터 자기 자신까지 약수를 전부 구한 다음 그걸 또 다른 리스트로 받아서 1과 자기 자신 이렇게 두개만 저장되는 것을 찾으려다보니 복잡해지고 코드가 너무 길어졌다.
이 방법은 도무지 아닌 거 같아 고민을 많이 하다가 소수의 의미를 다시 한번 곱씹었다.
해당 문제는 약수를 전부 출력하는 것이 아니라 소수인 수의 개수를 찾는 것이다. 그렇다면 소수는 그냥 약수의 개수가 2개(자기 자신과 1)뿐인 것을 찾으면 된다! 이걸 깨닫는데 시간이 너무 오래 걸렸다... 이를 활용하면 위 코드처럼 num 변수를 활용하여 소수의 개수를 파악할 수 있고, 최종적으로 count 개수를 출력함으로써 문제를 풀 수 있다!
아, 또 놓치기 쉬운 부분은 예제 입력처럼 '1 3 5 7' 형태로 입력을 받아야 한다는 점이다. 이는 '변수=input().split()'을 활용하여 해결할 수 있다.
더 열심히 하자... 파이팅!
'CODING 💻' 카테고리의 다른 글
| 백준 11653번 - 소인수분해 (PYTHON 풀이) (0) | 2025.09.05 |
|---|---|
| 백준 2581번 - 소수 (PYTHON 풀이) (0) | 2025.09.04 |
| 백준 9506번 - 약수들의 합 (PYTHON 풀이) (0) | 2025.09.02 |
| 백준 2501번 - 약수 구하기 (PYTHON 풀이) (1) | 2025.09.01 |
| 백준 5086번 - 배수와 약수 (PYTHON 풀이) (1) | 2025.08.31 |
