[BOJ/JavaScript] 7453: 합이 0인 네 정수

2025. 6. 17. 23:11·Problem Solving/BOJ

문제

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

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

A[a], B[b], C[c], D[d]의 합이 0인 (a, b, c, d) 쌍의 개수를 구해야 한다.

  • 1 ≤ 배열의 크기 ≤ 4,000

 

풀이

배열의 최대 크기가 4,000으로 단순 4중 반복문으로는 16,000,000^2번 반복해야 하므로 불가능하다.

이분 탐색 혹은 투 포인터를 활용하거나, 맵으로 저장하는 방법이 있다.

 

처음은 이분 탐색으로 풀이를 시도했는데, 계속 시간 초과가 났다. 그래서 풀이 방법을 찾아보다가 맵을 활용해서 풀었더니 통과할 수 있었다.

찾아보니 JS로는 이분 탐색, 투 포인터로는 시간 내로 풀 수 없다고 한다. 또 자바의 경우엔 맵으로 풀 수 없고, 이분 탐색이나 투 포인터로 풀어야 한다고.

 

코드

const [[n], ...rows] = require("fs")
  .readFileSync(process.platform === "linux" ? "/dev/stdin" : "./input.txt")
  .toString()
  .trim()
  .split("\n")
  .map((line) => line.split(" ").map(Number));

const A = rows.map(row => row[0]);
const B = rows.map(row => row[1]);
const C = rows.map(row => row[2]);
const D = rows.map(row => row[3]);

const ABMap = new Map();

for (let i = 0; i < n; i++) {
  for (let j = 0; j < n; j++) {
    const sum = A[i] + B[j];
    ABMap.set(sum, (ABMap.get(sum) || 0) + 1);
  }
}

let count = 0;

for (let i = 0; i < n; i++) {
  for (let j = 0; j < n; j++) {
    const sum = C[i] + D[j];
    const target = -sum;
    if (ABMap.has(target)) {
      count += ABMap.get(target);
    }
  }
}

console.log(count);

 

저작자표시 비영리 동일조건 (새창열림)

'Problem Solving > BOJ' 카테고리의 다른 글

[BOJ/JavaScript] 9328: 열쇠  (1) 2025.06.30
[BOJ/JavaScript] 1541: 잃어버린 괄호  (1) 2025.06.21
[BOJ/Java] 1863: 스카이라인 쉬운거  (0) 2025.06.17
[BOJ/Java] 16236: 아기 상어  (1) 2025.06.14
[BOJ/Java] 16927: 배열 돌리기 2  (1) 2025.06.12
'Problem Solving/BOJ' 카테고리의 다른 글
  • [BOJ/JavaScript] 9328: 열쇠
  • [BOJ/JavaScript] 1541: 잃어버린 괄호
  • [BOJ/Java] 1863: 스카이라인 쉬운거
  • [BOJ/Java] 16236: 아기 상어
friend5hip
friend5hip
개발 관련 지식이나 기록을 남기고 있습니다.
  • friend5hip
    friend5hip
    friend5hip
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • 컴퓨터공학 (2)
        • 자료구조 (0)
        • 알고리즘 (1)
        • 데이터베이스 (1)
      • Problem Solving (42)
        • BOJ (25)
        • 프로그래머스 (15)
      • 언어 (2)
        • JavaScript (2)
      • 라이브러리 (12)
        • React (12)
      • 개발 (2)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dfs
    BFS
    react
    누적 합
    java
    순열
    백준
    프로그래머스
    수학
    집합
    그리디
    맵
    이분 탐색
    백트래킹
    vite
    구간 합
    소수 판별
    문자열
    정렬
    코드트리
    완전 탐색
    시뮬레이션
    삼성 sw 역량테스트
    JavaScript
    dp
    intersection observer
    구현
    N과 M
    투 포인터
    매개 변수 탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
friend5hip
[BOJ/JavaScript] 7453: 합이 0인 네 정수
상단으로

티스토리툴바