์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] ๋ฐฑ์ค€ 2143๋ฒˆ ใ€G3.๋‘ ๋ฐฐ์—ด์˜ ํ•ฉใ€‘

2023. 8. 16. 12:30

๋ฌธ์ œ

 

 

2143๋ฒˆ: ๋‘ ๋ฐฐ์—ด์˜ ํ•ฉ

์ฒซ์งธ ์ค„์— T(-1,000,000,000 ≤ T ≤ 1,000,000,000)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” n(1 ≤ n ≤ 1,000)์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ ๋‹ค์Œ ์ค„์— n๊ฐœ์˜ ์ •์ˆ˜๋กœ A[1], …, A[n]์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ ์ค„์—๋Š” m(1 ≤ m ≤ 1,000)์ด ์ฃผ์–ด์ง€๊ณ , ๊ทธ

www.acmicpc.net


ํ’€์ด

๊ฐ ๋ฐฐ์—ด์˜ ๋ถ€๋ถ„ํ•ฉ์„ ์ „๋ถ€ ๊ตฌํ•œ๋‹ค.

 

	    List<Long> sumsA = new ArrayList<>();
		n = Integer.parseInt(br.readLine());
        A = Arrays.stream(br.readLine().split(" ")).mapToLong(Long::valueOf).toArray();

        for (int i = 0; i < n; i++) {
            long res = 0;
            for (int j = i; j < n; j++) {
                res += A[j];
                sumsA.add(res);
            }
        }

 

๊ฐ ๋ฐฐ์—ด์˜ ์ตœ๋Œ€ ์›์†Œ ๊ฐœ์ˆ˜๋Š” 1000๊ฐœ์ด๋ฏ€๋กœ ์ด์ค‘ ํฌ๋ฌธ์„ ์‚ฌ์šฉํ•ด๋„ ์‹œ๊ฐ„๋ณต์žก๋„์— ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋ ‡๊ฒŒ, ๋ฐฐ์—ด A์™€ ๋ฐฐ์—ด B์˜ ๋ถ€๋ถ„ํ•ฉ์„ ๋‹ค ๊ตฌํ•œ ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ๋’ค ํˆฌ ํฌ์ธํ„ฐ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;


public class Main {
    int T;
    int n;
    int m;
    long[] A;
    long[] B;
    List<Long> sumsA = new ArrayList<>();
    List<Long> sumsB = new ArrayList<>();

    public static void main(String[] args) throws IOException {
        new Main().sol();
    }

    private void sol() throws IOException {
        setUp();
        Collections.sort(sumsA);
        Collections.sort(sumsB);
        
        long cnt = 0;
        int left = 0, right = sumsB.size() - 1;
        while (left <= sumsA.size()-1 && right >= 0) {
            long sum = sumsA.get(left) + sumsB.get(right);

            if (sum < T) {
                left++;
            } else if (sum > T) {
                right--;
            } else {
                long cntOfL = 1;
                long cntOfR = 1;

                while (left + 1 <= sumsA.size() - 1 && sumsA.get(left).equals(sumsA.get(left + 1))) {
                    cntOfL++;
                    left++;
                }

                while (right - 1 >= 0 && sumsB.get(right).equals(sumsB.get(right - 1))) {
                    cntOfR++;
                    right--;
                }

                cnt += cntOfL * cntOfR;

                left++;
                right--;
            }
        }
        System.out.println(cnt);

    }

    private void setUp() throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        T = Integer.parseInt(br.readLine());
        n = Integer.parseInt(br.readLine());
        A = Arrays.stream(br.readLine().split(" ")).mapToLong(Long::valueOf).toArray();
        m = Integer.parseInt(br.readLine());
        B = Arrays.stream(br.readLine().split(" ")).mapToLong(Long::valueOf).toArray();

        for (int i = 0; i < n; i++) {
            long res = 0;
            for (int j = i; j < n; j++) {
                res += A[j];
                sumsA.add(res);
            }
        }

        for (int i = 0; i < m; i++) {
            long res = 0;
            for (int j = i; j < m; j++) {
                res += B[j];
                sumsB.add(res);
            }
        }
    }
}

 

 

์ด ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด์„œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์ด ์žˆ์—ˆ๋‹ค.

 

				while (left + 1 <= sumsA.size() - 1 && sumsA.get(left) == sumsA.get(left + 1)) {
                    cntOfL++;
                    left++;
                }

                while (right - 1 >= 0 && sumsB.get(right) == sumsB.get(right - 1)) {
                    cntOfR++;
                    right--;
                }

 

์ฒ˜์Œ์—๋Š” ์œ„ ์ฝ”๋“œ ์ฒ˜๋Ÿผ whlie ์กฐ๊ฑด๋ฌธ์— equals() ๊ฐ€ ์•„๋‹Œ == ๋น„๊ต๋ฅผ ํ–ˆ์—ˆ๊ณ 

 

ํ†ต๊ณผ๊ฐ€ ๋˜์ง€ ์•Š์•˜๋‹ค.

 

List<> ๋Š” Wrapper ํƒ€์ž…์œผ๋กœ ๋ณด๊ด€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ == ๋น„๊ต๊ฐ€ ์„ฑ๋ฆฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๊ฐ„๊ณผํ–ˆ๋‹ค.

 

์˜ˆ์ œ๋กœ ๋‚˜์˜จ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ†ต๊ณผํ•ด์„œ ๋ˆˆ์น˜๋ฅผ ๋ชป์ฑ˜๋˜ ๊ฒƒ์ด๋‹ค.

 

chatGPT์— ๋”ฐ๋ฅด๋ฉด ์ž‘์€ ๊ฐ’์˜ ๊ฒฝ์šฐ Wrapper ํƒ€์ž…์ด๋ผ๋„ ๊ฐ’์„ ๊ณต์œ ํ•ด์„œ == ๋น„๊ต๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๊ฐ’์ด ์ปค์ง€๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ, ์ปฌ๋ ‰์…˜์—์„œ get() ํ•ด์„œ ๋ณ€์ˆ˜๋กœ ํ• ๋‹นํ•˜๊ณ  ๋น„๊ต๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ฉด

 

์ปฌ๋ ‰์…˜์—์„œ์˜ ์›์†Œ ๋น„๊ต๋Š” ๊ผญ equals()๋ฅผ ์“ฐ๋„๋ก ์ฃผ์˜ํ•ด์•ผํ•จ์„ ์•Œ ์ˆ˜ ์žˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.

    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] ๋ฐฑ์ค€ 18869๋ฒˆ ใ€G5.๋ฉ€ํ‹ฐ๋ฒ„์Šค โ…กใ€‘
    • ๋ฌธ์ž์—ด ์ˆ˜์‹ ๊ณ„์‚ฐํ•˜๋Š” ๋ฉ”์„œ๋“œ ๋งŒ๋“ค๊ธฐ
    • [JAVA] 2021 KAKAO BLIND RECRUITMENT ใ€ํ•ฉ์Šน ํƒ์‹œ ์š”๊ธˆใ€‘
    • [JAVA] 2021 ์นด์นด์˜ค ์ฑ„์šฉ์—ฐ๊ณ„ํ˜• ์ธํ„ด์‹ญ ใ€๊ฑฐ๋ฆฌ๋‘๊ธฐ ํ™•์ธํ•˜๊ธฐใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”