b.3273 ๋‘ ์ˆ˜์˜ ํ•ฉ

2025. 4. 1. 19:23ยทAlgorithm & Data Structures/BOJ

 

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

 

 

 

๐Ÿ“Œ ์ž๋ฐ”(Java)๋กœ ํ‘ธ๋Š” ๋‘ ์ˆ˜์˜ ํ•ฉ ๋ฌธ์ œ - ๋ฐฑ์ค€ 3273 

 


๐Ÿ”Ž ๋ฌธ์ œ ๊ฐœ์š”

 

๋ฐฑ์ค€ 3273๋ฒˆ - ๋‘ ์ˆ˜์˜ ํ•ฉ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ •์ˆ˜ N๊ฐœ๋กœ ์ด๋ฃจ์–ด์ง„ ์ˆ˜์—ด์ด ์ฃผ์–ด์งˆ ๋•Œ,

์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ˆ˜๋ฅผ ๋”ํ•ด์„œ target์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์กฐ๊ฑด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

โ€ข ํ•œ ์Œ์€ ํ•œ ๋ฒˆ๋งŒ ์…ˆ

โ€ข ์ค‘๋ณต ์—†์ด, ์˜ค๋ฆ„์ฐจ์ˆœ ๋˜๋Š” ๋‚ด๋ฆผ์ฐจ์ˆœ ์ƒ๊ด€์—†์ด ์Œ์„ ๊ตฌ์„ฑ

 



๐Ÿ’ก ์˜ˆ์ œ ์ž…๋ ฅ

9  
5 12 7 10 9 1 2 3 11  
13

๐Ÿ’ก ์˜ˆ์ œ ์ถœ๋ ฅ

3

โžก 5+8, 1+12, 2+11 ์ด 3์Œ์ด ์กด์žฌ

 



๐Ÿ›  ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ‘๊ทผ ๋ฐฉ์‹

 

์ด ๋ฌธ์ œ๋Š” ๋Œ€ํ‘œ์ ์ธ ํˆฌ ํฌ์ธํ„ฐ(Two Pointer) ๊ธฐ๋ฒ•์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โœ๏ธ ์ฃผ์š” ๊ณ ๋ ค ์‚ฌํ•ญ

โ€ข ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ํ›„, ์™ผ์ชฝ ํฌ์ธํ„ฐ(left)์™€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ(right) ๋ฅผ ์–‘ ๋์— ๋ฐฐ์น˜

โ€ข ํ•ฉ์ด target๋ณด๋‹ค ํฌ๋ฉด right๋ฅผ ์™ผ์ชฝ์œผ๋กœ,

โ€ข ์ž‘์œผ๋ฉด left๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™

โ€ข ์ •ํ™•ํžˆ ๊ฐ™์œผ๋ฉด ์ •๋‹ต(answer)์— +1 ํ›„ ์–‘์ชฝ ํฌ์ธํ„ฐ ์ด๋™

 



๐Ÿ”น Java ์ฝ”๋“œ ํ•ด์„ค

import java.io.*;
import java.util.*;

public class Main {

    static int N, target, answer;
    static int[] arr;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        N = Integer.parseInt(br.readLine());
        arr = new int[N];

        StringTokenizer st = new StringTokenizer(br.readLine());
        target = Integer.parseInt(br.readLine());
        answer = 0;

        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(arr); // ํˆฌํฌ์ธํ„ฐ๋ฅผ ์œ„ํ•ด ์ •๋ ฌ

        int left = 0, right = N - 1;

        while (left < right) {
            int sum = arr[left] + arr[right];

            if (sum == target) {
                answer++;
                left++;
                right--;
            } else if (sum > target) {
                right--;
            } else {
                left++;
            }
        }

        System.out.println(answer);
    }
}

 

 



๐Ÿ” ์ฝ”๋“œ ์„ค๋ช…

 

๐Ÿ“Œ 1. ์ž…๋ ฅ ์ฒ˜๋ฆฌ ๋ฐ ๋ฐฐ์—ด ์ •๋ ฌ

N = Integer.parseInt(br.readLine());
arr = new int[N];
// ...
Arrays.sort(arr);

โœ” ์ž…๋ ฅ๋œ ์ˆ˜์—ด์„ ์ •์ˆ˜ ๋ฐฐ์—ด๋กœ ์ €์žฅํ•˜๊ณ  ์ •๋ ฌ

โœ” ์ •๋ ฌ์€ ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ „์ฒ˜๋ฆฌ ์ž‘์—…

 



๐Ÿ“Œ 2. ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ ์šฉ

int left = 0, right = N - 1;

while (left < right) {
    int sum = arr[left] + arr[right];

    if (sum == target) {
        answer++;
        left++;
        right--;
    } else if (sum > target) {
        right--;
    } else {
        left++;
    }
}

โœ” left + right == target์ธ ๊ฒฝ์šฐ, ์ •๋‹ต์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ  ์–‘์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™

โœ” ํ•ฉ์ด ๋„ˆ๋ฌด ํฌ๋ฉด right ๊ฐ์†Œ, ์ž‘์œผ๋ฉด left ์ฆ๊ฐ€

โœ” ์ค‘๋ณต ์—†์ด ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰ ๊ฐ€๋Šฅ

 



๐Ÿ† ์ •๋ฆฌ

 

โœ… ํ•ต์‹ฌ ํฌ์ธํŠธ

 

โœ” ์ •๋ ฌ๋œ ๋ฐฐ์—ด์„ ํ™œ์šฉํ•œ ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜

โœ” ์ค‘๋ณต ์—†์ด ๋‘ ์ˆ˜์˜ ํ•ฉ์ด target์ด ๋˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ๊ณ„์‚ฐ

โœ” O(NlogN) ์ •๋ ฌ + O(N) ํƒ์ƒ‰์œผ๋กœ ํšจ์œจ์ ์ธ ํ•ด๊ฒฐ

 



๐ŸŽฏ ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์žฅ์ 

 

โœ… ์‹œ๊ฐ„ ์ œํ•œ์ด ์—„๊ฒฉํ•œ ์ƒํ™ฉ์—์„œ๋„ ๋น ๋ฅด๊ฒŒ ๋™์ž‘

โœ… ๋ฐฐ์—ด ๋‚ด์—์„œ ์กฐ๊ฑด์— ๋งž๋Š” ์Œ์„ ํšจ์œจ์ ์œผ๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

โœ… ๊ธฐ์ดˆ์ ์ธ ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต์— ์ ํ•ฉํ•œ ๋Œ€ํ‘œ ๋ฌธ์ œ

 


์ด ๊ธ€์ด ๋„์›€์ด ๋˜์…จ๋‹ค๋ฉด ์ข‹์•„์š”์™€ ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ˜Š

 

 

'Algorithm & Data Structures > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

b.2696 ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ  (0) 2025.04.07
b.2075 N๋ฒˆ์งธ ํฐ ์ˆ˜  (0) 2025.04.04
b.11657 ํƒ€์ž„๋จธ์‹   (0) 2025.03.20
b1956. ์šด๋™  (0) 2025.03.20
b.9370 ๋ฏธํ™•์ธ ๋„์ฐฉ์ง€  (0) 2025.03.15
'Algorithm & Data Structures/BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • b.2696 ์ค‘์•™๊ฐ’ ๊ตฌํ•˜๊ธฐ
  • b.2075 N๋ฒˆ์งธ ํฐ ์ˆ˜
  • b.11657 ํƒ€์ž„๋จธ์‹ 
  • b1956. ์šด๋™
Geisha
Geisha
๊ฐœ๋ฐœ ์ผ๊ธฐ
  • Geisha
    Geisha
    Geisha
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (316) N
      • Algorithm & Data Structures (238) N
        • BOJ (96) N
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (25)
        • SQL (19)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • ์šด์˜์ฒด์ œ (13)
        • ๋„คํŠธ์›Œํฌ (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๊ณจ๋“œ
    Dijkstra
    unionfind
    BFS
    DynamicProgramming
    ๋ฐฑ์ค€
    SQL
    algorithm
    Union-Find
    baekjoon
    dfs
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํ›„์œ„์ˆœํšŒ
    programmers
    binarySearch
    ํˆฌํฌ์ธํ„ฐ
    Stack
    ์ „์œ„์ˆœํšŒ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ์ด๋ถ„ํƒ์ƒ‰
    ๊ฒฝ๋กœ์••์ถ•
    Java
    dp
    PriorityQueue
    ์Šคํƒ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    ์œ ๋‹ˆ์˜จํŒŒ์ธ๋“œ
    ๋™์ ๊ณ„ํš๋ฒ•
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๊ตฌํ˜„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
Geisha
b.3273 ๋‘ ์ˆ˜์˜ ํ•ฉ
์ƒ๋‹จ์œผ๋กœ

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.