[BOJ] 합이 0인 네 정수 7453번 C++

2024. 4. 8. 17:15· Algorithm

문제

정수로 이루어진 크기가 같은 배열 A, B, C, D가 있다.

A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 배열의 크기 n (1 ≤ n ≤ 4000)이 주어진다. 다음 n개 줄에는 A, B, C, D에 포함되는 정수가 공백으로 구분되어져서 주어진다. 배열에 들어있는 정수의 절댓값은 최대 228이다.

출력

합이 0이 되는 쌍의 개수를 출력한다.

 

접근 방식

 

은근 투 포인터 문제에 map 자료구조를 사용하는 풀이가 많이 있는 것 같다

해당 문제는 AB의 합을 unordered_map에 저장(map에 저장하면 매번 sort가 일어나기 때문에 시간초과 발생)

하고 C,D 배열을 돌면서 해당하는 값이 존재하는지 확인만 하면 된다!

 

 

코드

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int n; cin >> n;
    vector<int> A(n), B(n), C(n), D(n);
    for(int i = 0; i < n; i++) {
        cin >> A[i] >> B[i] >> C[i] >> D[i];
    }

    unordered_map<int, int> ABsums;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            ABsums[A[i] + B[j]]++;
        }
    }

    long long ans = 0;
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < n; j++) {
            int sumCD = C[i] + D[j];
            if(ABsums.find(-sumCD) != ABsums.end()) {
                ans += ABsums[-sumCD];
            }
        }
    }

    cout << ans;
    return 0;
}

'Algorithm' 카테고리의 다른 글

[BOJ] N번째 큰 수 2075번 C++  (1) 2024.04.12
[BOJ] 선분 위의 점 11663번 C++  (0) 2024.04.11
[BOJ] 마법사 상어와 토네이도 20057번 C++  (0) 2024.04.08
[BOJ] 부분합 1806번 C++  (1) 2024.04.06
[BOJ] 회전 초밥 15961번 C++  (2) 2024.04.06
'Algorithm' 카테고리의 다른 글
  • [BOJ] N번째 큰 수 2075번 C++
  • [BOJ] 선분 위의 점 11663번 C++
  • [BOJ] 마법사 상어와 토네이도 20057번 C++
  • [BOJ] 부분합 1806번 C++
따봉치치
따봉치치
따봉치치
김치치의개발블로그
따봉치치
전체
오늘
어제
  • 분류 전체보기 (359)
    • 면접질문 (4)
    • CS (50)
    • FE (116)
      • Javascipt (16)
      • Typescipt (6)
      • React (16)
      • CSS (5)
      • Nextjs (1)
      • 리뷰 (70)
    • Algorithm (181)
    • ETC (3)
      • Bootcamp (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CS
  • 데이터베이스
  • react
  • typescript
  • 탐욕 알고리즘
  • 그리디
  • 백준
  • javascript
  • 백트래킹
  • 누적합
  • Fe
  • 스택
  • dp
  • 그래프 탐색
  • TOPCIT
  • 완전탐색
  • 자료구조
  • 알고리즘
  • BOJ
  • 모던 리액트 딥다이브
  • 투 포인터
  • BFS
  • 문자열
  • 우선순위 큐
  • 자바스크립트
  • 모던 자바스크립트 딥다이브
  • 리액트
  • C++
  • Greedy
  • Stack

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
따봉치치
[BOJ] 합이 0인 네 정수 7453번 C++
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.