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 |
Tags
- 부스트캠프_AITech_3기
- 구현
- 그래프이론
- Level2_PStage
- mrc
- 단계별문제풀이
- 기술면접
- Level2
- 백준
- dp
- Level1
- 프로그래머스
- 정렬
- 이코테
- ODQA
- 이진탐색
- 알고리즘_스터디
- 파이썬 3
- 주간회고
- python3
- 부스트캠프_AITech3기
- 그리디
- 알고리즘스터디
- 백트랙킹
- 다시보기
- U_stage
- dfs
- 최단경로
- 개인회고
- 다이나믹프로그래밍
Archives
- Today
- Total
국문과 유목민
20. 약수의 합 본문
0. 문제
링크) https://programmers.co.kr/learn/courses/30/lessons/12928
1. 알고리즘 계획
- for문을 돌면서 입력변수와 나누어 떨어지는 변수들로 리스트를 만든다. (리스트 컴프리핸션 이용)
- 리스트의 값을 모두 더한다 (sum함수 이용)
2. 나의 코드
def solution(n):
answer = 0
ls = [idx for idx in range(1, n+1) if n % idx == 0]
answer = sum(ls)
return answer
3. 다른 사람의 코드
def solution2(num):
# num / 2 의 수들만 검사하면 성능 약 2배 향상
return num + sum([i for i in range(1, (num // 2) + 1) if num % i == 0])
- num/2의 수들만 for문을 돌게함으로써 성능의 약 2배를 향상시킬 수 있다.
- 만약 12의 경우 1, 2, 3, 6, 12이기에, 1, 2, 3, 6까지만 for문을 돌고, 나중에 num의 값을 더해주는 방식으로 계산
4. 정리 및 리뷰
- 이 문제 또한 파이썬 수업을 들으면서 처음쯤 시도했었던 문제였다.
- answer에 값을 대입한다거나 하지 않고, 바로 return을 시켜주면 조금 더 코드를 직관적으로 볼 수 있게 할 수 있다는 것을 알았다.
코드 만족도: ★★★★★
'알고리즘_코딩테스트 > 프로그래머스_Level1' 카테고리의 다른 글
22. 자릿수 더하기 (0) | 2020.09.11 |
---|---|
21. 이상한 문자 만들기 (0) | 2020.09.11 |
19. 시저암호 (0) | 2020.09.10 |
18. 문자열을 정수로 바꾸기 (0) | 2020.09.10 |
17. 수박수박수박수박수박수? (0) | 2020.09.10 |
Comments