※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 25332번 문제인 수들의 합 8이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/25332 

 

25332번: 수들의 합 8

$A = \{1, 2, 3\}$, $B = \{1, 3, 2\}$로, 조건을 만족하는 $i, j$ 쌍은 $(1, 1), (2, 3), (1, 3)$의 세 가지이다. $A_1$ = $B_1 = 1$ $A_2 + A_3 = B_2 + B_3 = 5$ $A_1 + A_2 + A_3 = B_1 + B_2 + B_3 = 6$

www.acmicpc.net

Ai-Bi를 새로운 수열 Ci로 정의하면, 주어진 문제는 Ci의 합이 0이 되는 구간 [L,R]의 개수를 세는 문제로 바꿔 생각할 수 있다.

 

위와 같이 문제를 바꾸면 이 문제는 2015번 문제(링크)과 같은 문제로 바뀌게 된다. 해당 글을 참고해 문제를 해결하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <vector>
#include <map>
using namespace std;
typedef long long ll;

int N;
int arr[200000];
map<int, int> mp;
int psum = 0;
ll ans = 0;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	mp.insert(make_pair(0, 1));

	cin >> N;
	for (int i = 0; i < N; i++) cin >> arr[i];
	for (int i = 0; i < N; i++) {
		int x; cin >> x;
		arr[i] -= x;
	}

	for (int i = 0; i < N; i++) {
		psum += arr[i];
		if (mp.count(psum)) ans += mp[psum]++;
		else mp.insert(make_pair(psum, 1));
	}

	cout << ans;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 25331 // C++] Drop 7  (0) 2023.04.09
[BOJ 25330 // C++] SHOW ME THE DUNGEON  (0) 2023.04.08
[BOJ 2268 // C++] 수들의 합 7  (0) 2023.04.06
[BOJ 1821 // C++] 수들의 합 6  (0) 2023.04.05
[BOJ 2018 // C++] 수들의 합 5  (0) 2023.04.04

+ Recent posts