Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Algorithm
- db
- 그래프
- 인프콘2024
- 기초
- 몽고DB
- 수학
- chatGPT
- Python
- NoSQL
- 마크다운문법
- 데이터
- Markdown
- 백준
- 알고리즘기초
- 코딩테스트
- 데이터베이스
- 마크다운
- httpCode
- mongoDB
- 그리디
- 코테
- 그리디알고리즘
- 파이썬
- 탐색알고리즘
- 코딩문제
- 수열
- 소수
- database
- 알고리즘
Archives
- Today
- Total
Dev_from the Bottom
#15. Algorithm11_python) 약수 구하기 본문
문제) 약수 구하기
정수를 입력받아, 약수를 구해 출력
step1) 테스트1 : 기본 # n = 36
n = 36
for i in range(1, n+1): # 1~n까지 약수인지 확인
if n % i == 0: # 약수면
print(i, end = ' ') # 출력
print()
>>>
1 2 3 4 6 9 12 18 36
step2) 테스트2 : 리스트에 담기 # n = 36
# 확장 : list에 정답 담아서 출력, n = 36가정
n = 36
list_answer = [] # 약수를 담을 빈 리스트 생성
for i in range(1, n+1): # 1~n까지 약수인지 확인
if n % i == 0: # 약수면
list_answer.append(i) # 리스트에 추가
print(list_answer)
>>>
[1, 2, 3, 4, 6, 9, 12, 18, 36]
step3) 메서드
def algo11(n):
list_answer = [] # 약수를 담을 빈 리스트 생성
for i in range(1, n+1): # 1~n까지 약수인지 확인
if n % i == 0: # 약수면
list_answer.append(i) # 리스트에 추가
return list_answer # 정답 리스트 리턴
n = int(input('숫자 입력 : '))
print(f'{n}의 약수 : {algo11(n)}')
>>>
숫자 입력 : 72
72의 약수 : [1, 2, 3, 4, 6, 8, 9, 12, 18, 24, 36, 72]
# 배운 점
- 리스트를 활용한 정답 출력
# 소회
- 구글링 해보니, '임의의 자연수 N의 약수들 중에서 두 약수의 곱이 N이 되는 약수 A와 B는 반드시 존재한다'는 성질을 활용하여 효율적으로 문제 푸는 방식이 있음 -> 고민해 보기
- 그런데, 애초에 이런 수학적 성질을 모르면 알고리즘을 짤 수 없을 듯
'Algorithm_study' 카테고리의 다른 글
#17. Algorithm13_python) 시험 성적_백준 9498 (0) | 2022.05.20 |
---|---|
#16. Algorithm12_python) 소인수 분해 (0) | 2022.05.19 |
#14. Algorithm10_python) 최대공약수, 최소공배수 (0) | 2022.05.16 |
#13. Algorithm09_python) 소수의 합 (0) | 2022.05.14 |
#12. Algorithm08_python) 소수 판별 (0) | 2022.05.13 |
Comments