728x90
반응형
BaekJoon 백준 1834 나머지와 몫이 같은 수 문제는 2,000,000 이하의 자연수 N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 문제이다. 난이도는 Bronze 1이다. 단순한 문제 같지만 N의 크기가 커지면 시간 초과가 날 수 있는 문제이다.
BaekJoon 1834 나머지와 몫이 같은 수 문제 정보
출처
- https://www.acmicpc.net/problem/1834
알고리즘 분류
- 수학
난이도
- 브론즈 1 / Bronze 1
나머지와 몫이 같은 수 문제 요약
- N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하여 출력한다.
- N은 2,000,000 이하의 자연수이다.
- 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.
문제 풀이 과정
시간 초과
단순하게 생각하여 몫과 나머지가 같을 때라는 조건문과 반복문을 함께 사용하면 N이 2,000,000까지 있기 때문에 시간제한 2초를 넘겨 시간 초과가 발생한다.
sum = 0
N = int(input())
for i in range(N + 1, N * N):
if i // N == i % N:
sum += i
print(sum)
그래서 수학적으로 접근하여 몫과 나머지를 다룰 수 있는 검토식을 활용하면 조건문 없이 풀 수 있고, 시간도 줄어든다.
A ÷ N = 몫... 나머지 일 때, 검토식은 N X 몫 + 나머지 = A이다.
나머지는 0보다 크고, N보다 작고, 몫 = 나머지 이므로 A = N * i + i (0 <i <N)의 식을 도출할 수 있다.A를 모두 더하여 출력하면 된다.
코드 및 설명
sum = 0
N = int(input())
for i in range(1, N):
sum += N * i + i
print(sum)
BaekJoon 백준 1834 나머지와 몫이 같은 수 문제를 파이썬 python으로 풀어보았다. 간단한 문제인 줄 알았지만 수학적으로 접근해야 하는 문제였다. 난이도는 Bronze 브론즈 1이다.
728x90
반응형
'Algorithm Problem Solving > BaekJoon' 카테고리의 다른 글
[BaekJoon] 백준 14696 딱지놀이 (Python / 파이썬) (0) | 2021.08.20 |
---|---|
[BaekJoon] 백준 9933 민균이의 비밀번호 (Python / 파이썬) (0) | 2021.08.20 |
[BaekJoon] 백준 13301 타일 장식물 (Python / 파이썬) (0) | 2021.08.18 |
[BaekJoon] 백준 9625 BABBA (Python / 파이썬) (0) | 2021.08.18 |
[BaekJoon] 백준 11005 진법 변환 2 (Python / 파이썬) (0) | 2021.08.18 |
댓글