본문 바로가기

누적합3

2559번: 수열 - 문제 사이트: https://www.acmicpc.net/problem/2559 2559번: 수열 첫째 줄에는 두 개의 정수 N과 K가 한 개의 공백을 사이에 두고 순서대로 주어진다. 첫 번째 정수 N은 온도를 측정한 전체 날짜의 수이다. N은 2 이상 100,000 이하이다. 두 번째 정수 K는 합을 구하기 www.acmicpc.net "11659번: 구간 합 구하기 4"의 확장된 문제이다. 이전 문제가 i 부터 j까지 구간합의 값을 구하는 문제였다면, 이번에는 구간 너비가 주어진 문제이다. 0번부터 i번까지의 누적값을 구한 배열을 이용하여 풀어주도록 한다. 1) max 값은 나올 수 있는 가장 작은 값으로 설정: max = (가장 작은 수) * (구간 너비) = -100 * K 2) 구간합을 구하.. 2023. 9. 6.
11659번: 구간 합 구하기 4 - 문제 사이트: https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 정석적으로 풀면 문제 그대로 시작 번호부터 끝 번호까지 더해서 출력해주면 된다. 하지만, 이 경우 시작과 끝의 간격이 클 수록 계산하는데 시간이 오래 걸린다. 따라서, 로직 상으로는 맞지만 시간 초과 결과를 받게 된다. #include using namespace std; int main() { ios_base::sync_with_stdio(false); .. 2023. 9. 1.
2851번: 슈퍼 마리오 - 문제 사이트: https://www.acmicpc.net/problem/2851 2851번: 슈퍼 마리오 첫째 줄에 마리오가 받는 점수를 출력한다. 만약 100에 가까운 수가 2개라면 (예: 98, 102) 마리오는 큰 값을 선택한다. www.acmicpc.net 누적 합을 계산하고 푸는 문제이다. 10개의 값이 주어졌을 때, 1) 모든 수를 합하기 전에 100에 도달한 경우 2) 모든 수를 합하였으나, 100에 도달하지 못한 경우 이렇게 두 케이스로 나누어 결과를 계산해주어야 한다. #include #include using namespace std; int main() { int num[10]; for (int& n : num) cin >> n; int sum1 = 0; int sum2 = 0; .. 2023. 8. 31.