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
- 운영체제와 정보기술의 원리
- 코딩애플
- 쉬운코드
- 코딩테스트 [ ALL IN ONE ]
- 반효경
- Git
- CPU 스케줄링
- 네트워크
- 운영체제
- 시그널 핸들러
- 온디바이스AI
- 커널 동기화
- 데이터베이스
- SDK
- 백엔드
- B tree 데이터삽입
- SQL
- 프로세스 주소 공간
- vite
- 트랜잭션
- 갤럭시 S24
- concurrency control
- Extendable hashing
- 시스템프로그래밍
- 개발남노씨
- 김영한
- 인터럽트
- BreadcrumbsComputer-Networking_A-Top-Down-Approach
- 쉬운 코드
- recoverability
Archives
- Today
- Total
티끌모아 태산
1834: 나머지와 몫이 같은 수 본문
728x90
https://www.acmicpc.net/problem/1834
1834번: 나머지와 몫이 같은 수
N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.
www.acmicpc.net
설명
N으로 나누었을 때 나머지와 몫이 같은 모든 자연수의 합을 구하는 프로그램을 작성하시오. 예를 들어 N=3일 때, 나머지와 몫이 모두 같은 자연수는 4와 8 두 개가 있으므로, 그 합은 12이다.
핵심 아이디어
처음에는 단순히 조건문을 사용해서 N으로 나눈 몫과 나머지가 같은 수를 찾아 합한 값을 출력하면 되는줄 알았다. 하지만 범위를 지정하는 부분에서 헷갈리고 시간 초과가 발생하는 문제에 직면하였음. 따라서 단순 조건문이 아니라 일정한 패턴을 가진 수학적 접근이 필요함을 발견함.
n = 3
3*1+1 = 4
3*2+2 = 8
n = 5
5*1+1
5*2+2
5*3+3
5*4+4
코드 구현
C++
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
// 입력 최대 값이 2000000이기 때문에
// int로 표현 불가능 -> long long 사용
long long n;
cin >> n;
long long ans = 0;
for (int i = 1; i < n; i++) {
ans += (n * i + i);
}
cout << ans;
}
Python
n = int(input())
# 몫과 나머지가 같은 수를 저장하는 배열
ans = 0
for i in range(1, n):
ans += n*i+i
print(ans)
728x90
'백준 문제 > 문자열,누적합,구현' 카테고리의 다른 글
1296: 팀 이름 정하기 (0) | 2024.03.31 |
---|---|
1357: 뒤집힌 덧셈 (0) | 2024.03.31 |
1292: 쉽게 푸는 문제 (0) | 2024.03.28 |