일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 자료구조
- Proxy
- IT
- OS
- MySQL
- MSA
- Spring
- 백준
- design pattern
- 알고리즘
- Kafka
- react
- 디자인 패턴
- Data Structure
- 네트워크
- mongoDB
- Algorithm
- 파이썬
- 컴퓨터구조
- C
- redis
- 운영체제
- Heap
- spring webflux
- Java
- Galera Cluster
- c언어
- JavaScript
- JPA
- 자바
Archives
- Today
- Total
시냅스
백준 boj 17427 - 약수의 합 2 (파이썬, python) 본문
https://www.acmicpc.net/problem/17427
17427번: 약수의 합 2
두 자연수 A와 B가 있을 때, A = BC를 만족하는 자연수 C를 A의 약수라고 한다. 예를 들어, 2의 약수는 1, 2가 있고, 24의 약수는 1, 2, 3, 4, 6, 8, 12, 24가 있다. 자연수 A의 약수의 합은 A의 모든 약수를 더
www.acmicpc.net
문제의 난도는 높지 않으나, 시간 초과를 고려해야 하는 부분이 까다롭다.
첫 시도에 2중 반복문을 활용하였으나, 당연히 실패...
하여 얻은 인사이트는
만약 10을 기준으로 한다면,
1 은 총 10번 등장하고 ((10 / 1) * 1),
2 는 총 5번 등장하고 ((10 / 2) * 2),
3 은 총 3번 등장하고 ((10 / 3) * 3),
4, 5 는 총 2번 등장하고 ((n (10) / i ( 4 ~ 5 )) * i ( 4 ~ 5 )),
6, 7, 8, 9, 10 은 총 1번 등장한다 ((n (10) / i ( 6 ~ 10 )) * i ( 6 ~ 10 )).
수식으로 정리하면
( n / i ) * i
이 된다.
코드
n = int(input())
result = 0
for i in range(1, n + 1):
result += (n // i) * i
print(result)
'알고리즘' 카테고리의 다른 글
백준 boj 17425 - 약수의 합 (파이썬, python) (0) | 2022.02.08 |
---|---|
백준 boj 6588 - 골드바흐의 추측 (파이썬, python) (0) | 2022.02.08 |
백준 boj 2609 - 최대공약수와 최소공배수 (파이썬, python) (0) | 2022.02.08 |
백준 boj 1978 - 소수 찾기 (파이썬, python) (0) | 2022.02.08 |
백준 boj 4375 - 1 (파이썬, python) (0) | 2022.02.07 |
Comments