Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 11653번 - 소인수분해 (PYTHON 풀이) 본문
문제:

해당 문제는 입력 받은 수를 소인수분해하고 각 라인에 어떤 수로 나누었는지 출력하라는 문제이다.
풀이:
a=int(input())
while(a!=1):
for i in range(2,a+1):
if a % i == 0:
print(i)
a = a//i
break
초기 코드이다. 비쥬얼스튜디오 돌렸을 땐 이상 없이 잘 되어서 제출했는데 계속 시간 초과가 나서 푸는데 오래 걸렸다..
for문 돌 때 범위가 넓어서 그런가 싶어 좀 더 줄여서 해보았는데도 해결이 안됐다.
a = int(input())
i = 2
while i * i <= a:
while a % i == 0:
print(i)
a //= i
i += 1
if a > 1:
print(a)
어떻게 해도 해결이 잘 안되어서 서치를 통해 풀었다.
핵심 아이디어는 다음과 같다. 어떤 합성수 a가 있을 때 적어도 하나의 약수 p가 p <=루트a이다. 즉 소인수 탐색을 i*i<=a까지만 하면 루프를 조금만 돌아도 해결할 수 있게 된다.
보는 동안은 이해가 됐는데 정리하는동안 보니 또 갑자기 헷갈린다. 분명 다른 방법도 있을 것이다.
업로드 한 뒤에 좀 더 살펴봐야겠다..!
'CODING 💻' 카테고리의 다른 글
| 백준 10101번 - 삼각형 외우기 (PYTHON 풀이) (0) | 2025.09.07 |
|---|---|
| 백준 2903번 - 중앙 이동 알고리즘 (PYTHON 풀이) (0) | 2025.09.06 |
| 백준 2581번 - 소수 (PYTHON 풀이) (0) | 2025.09.04 |
| 백준 1978번 - 소수 찾기 (PYTHON 풀이) (0) | 2025.09.03 |
| 백준 9506번 - 약수들의 합 (PYTHON 풀이) (0) | 2025.09.02 |
