728x90
문제) 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.
이번 문제는 2가지 방법을 통해 풀었다. 처음에 for문을 이용하여 풀고 싶었는데 ,
while 문이 좀 더 간단하고, 이해하기 쉬웠다.
while 문에서 보면 처음 입력값 a를 넣고, a가 1이 아니면 i를 증감시키도록
그 후 if문을 통해 a % i 가 0이면 a // i를 반복하도록 하였다.
이 후 print(i)를 출력하고, i 를 초기화를 하면 다음과 같이 나온다.
1) while 문을 이용한 문제 풀이
a = int(input())
i = 1
while a != 1: # 1로만 나누어질때까지 반복
i += 1 # 나누어 떨어질때까지 i에 1 추가
if a % i == 0: # 나누어 떨어지는경우
a = a // i # 나누기 한 N 저장
print(i) # 나눈 수 출력
i = int(1) # i 초기화 (시간이 오래걸린다..!)
2) for 문을 이용한 문제 풀이
n = int(input())
if n == 1:
print('')
# 2부터 하나씩 나눠보기
for i in range(2, n+1):
if n % i == 0:
#해당 숫자로 나눌 수 없을 때까지 나누기
while n % i == 0:
print(i)
n = n / i
# if문이 코드길이가 짧다!
이해가 안되시거나 틀린 정보는 댓글로 알려주시면 감사하겠습니다!
728x90
'알고리즘 > 백준 - 파이썬' 카테고리의 다른 글
백준) 5355번 화성 수학 문제 (파이썬) (0) | 2022.06.15 |
---|---|
백준) 2775번 부녀회장이 될테야! (파이썬) (0) | 2022.06.15 |
백준) 10250번 ACM 호텔 문제 (파이썬) (0) | 2022.06.13 |
백준) 11718번 그대로 출력하기 문제 (파이썬) (0) | 2022.06.10 |
백준) 7287번 등록 문제 (파이썬) (0) | 2022.06.10 |
댓글