728x90
반응형
Siver IV
# 11653 소인수분해
https://www.acmicpc.net/problem/11653
내 풀이 방식
주어진 N값을 소수로 나누었을 때 구할 수 있는 약수를, 다시 소수로 나누는 과정을 반복하면 구할 수 있을 것이라 생각했지만, 코드구현에 실패했다.
다른 풀이 코드 리뷰
- while문 활용 (스터디원)
n = int(input())
d = 2
while n != 1:
if n%d == 0:
n = n // d
print(d)
else:
d+=1
- 생각보다 간단하고 깔끔하게 코드 구현을 잘 했다.
- 재귀적 풀이가 어려울 때 while문과 조건을 이용해서 시도해볼 수 있을 것이다.
- 재귀 함수 풀이(by_mentor)
def get_factor(x):
for i in range(2, x+1):
share, remainder = x//i, x%i
if remainder == 0:
return share, int(x/share)
return 1, x # 질문 : 1, x를 반환?
N = int(input())
if N == 1:
pass
else:
factors = []
while N != 1:
N, factor = get_factor(N)
factors.append(factor)
for f in factors:
print(f)
- def로 함수를 정의해서 풀이하는 방식이다. 문제 의도에는 보다 적합한 풀이라고 생각한다.
- 재귀함수를 구성하는 방식에 대해 익숙해질 필요가 있다.
- 다 이해 하지 못했었도 보고 익히도록 하자
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] #3135 라디오 (0) | 2021.11.26 |
---|---|
[백준 파이썬] #14646 욱제는 결정장애야!! (0) | 2021.11.26 |
[백준 파이썬] #2217 로프 (0) | 2021.11.26 |
[백준 파이썬] #1302 베스트셀러 (0) | 2021.11.26 |
[백준 파이썬] #16435 스네이크 버드 (0) | 2021.11.26 |