[Java] ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ๋ฐฑ์ค€ 1253๋ฒˆ

2025. 11. 7. 12:14ยทโ˜•Java/์ฝ”๋”ฉํ…Œ์ŠคํŠธ

๐Ÿ’ก ํˆฌ ํฌ์ธํ„ฐ

: ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ์—์„œ '๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ 'ํŠน์ • ๊ตฌ๊ฐ„์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ๊ตฌ๊ฐ„'์„ ํšจ์œจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

  • ๋ณดํ†ต ์™ผ์ชฝ ํฌ์ธํ„ฐ์™€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๊ฐ๊ฐ ํƒ์ƒ‰ ๋ฒ”์œ„์˜ ์‹œ์ž‘๊ณผ ๋์„ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
  • ์™ผ์ชฝ ํฌ์ธํŠธ๋ฅผ ๊ณ ์ •ํ•œ ์ƒํƒœ์—์„œ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™ํ•˜๊ฑฐ๋‚˜, ์กฐ๊ฑด์— ๋”ฐ๋ผ ์™ผ์ชฝ ํฌ์ธํŠธ๋„ ์ด๋™ํ•˜๋ฉฐ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•œ ๋ฒˆ์˜ ๋ฐ˜๋ณต์œผ๋กœ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์„ ํ˜• ์‹œ๊ฐ„ ๋ณต์žก๋„ O(n)์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ฆ‰, ์ˆ˜ํ–‰ ์‹œ๊ฐ„์ด ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ ํฌ๊ธฐ์— ๋น„๋ก€ํ•ฉ๋‹ˆ๋‹ค.
  • ํƒ์ƒ‰ ๋ฒ”์œ„ ๋‚ด์—์„œ ํŠน์ • ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ๊ฑฐ๋‚˜, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ๊ธธ์ด ๋“ฑ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์— ํ™œ์šฉ

๋‹จ๊ณ„

  1. ๋ฐฐ์—ด ๋˜๋Š” ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ์œ„์น˜์— ์ฒซ ๋ฒˆ์งธ ํฌ์ธํŠธ์™€ ๋‘ ๋ฒˆ์งธ ํฌ์ธํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋‘ ํฌ์ธํ„ฐ ์‚ฌ์ด์˜ ๊ตฌ๊ฐ„์„ ์กฐ์‚ฌํ•˜๋ฉฐ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ค๋ฉฐ ๋‹ค์Œ ๊ตฌ๊ฐ„์„ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

์ข…๋ฅ˜

๊ณ ์ • ๊ธธ์ด ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ

  • ๊ณ ์ •๋œ ๊ธธ์ด์˜ ์œˆ๋„์šฐ(์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ตฌ๊ฐ„)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์ด๋‚˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  • ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ์ผ์ •ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๋ฏ€๋กœ ์™ผ์ชฝ ํฌ์ธํ„ฐ์™€ ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ ํ•จ๊ป˜ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  • ๋ถ€๋ถ„ ๋ฐฐ์—ด์˜ ํ•ฉ์ด๋‚˜ ํ‰๊ท ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€๋ณ€ ๊ธธ์ด ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ

  • ์œˆ๋„์šฐ์˜ ํฌ๊ธฐ๋ฅผ ํ•„์š”์— ๋”ฐ๋ผ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™์‹œํ‚ต๋‹ˆ๋‹ค.
  • ์ตœ์†Œ ๊ธธ์ด ๋ถ€๋ถ„ ๋ฐฐ์—ด์ด๋‚˜ ์ตœ๋Œ€ ๊ธธ์ด ๋ถ€๋ถ„ ๋ฐฐ์—ด์„ ์ฐพ๋Š” ๋ฌธ์ œ์— ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ… ๋ฐฑ์ค€ 1253๋ฒˆ

๐Ÿ”— ๋ฌธ์ œ ํ’€๋Ÿฌ๊ฐ€๊ธฐ

 

 

  • ํˆฌ ํฌ์ธํ„ฐ๋กœ ํ‘ธ๋Š” ๋ฌธ์ œ์ธ์ง€ ์–ด๋–ป๊ฒŒ ์•Œ๊นŒ?
    • ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์ข‹์€ ์ˆ˜์ธ์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹ค๋ฅธ ์ˆ˜ ๋‘ ๊ฐœ, ์ฆ‰ ๋‘ ๊ฐœ์˜ ์š”์†Œ๋กœ ํ™•์ธํ•˜๋ฏ€๋กœ ํฌ์ธํ„ฐ 2๊ฐœ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • ํฌ์ธํ„ฐ๋Š” ์–ด๋–ป๊ฒŒ ์ด๋™ํ•ด์•ผ ํ• ๊นŒ?
    • ์ž๊ธฐ ์ž์‹ ์˜ ์ธ๋ฑ์Šค๋Š” ์ œ์™ธ
    • ๋ฐฐ์—ด์„ ์ •๋ ฌ ํ›„ ์™ผ์ชฝ ํฌ์ธํ„ฐ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ, ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’๋ถ€ํ„ฐ ์ถœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
    • ๋‘ ํฌ์ธํ„ฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์š”์†Œ์˜ ํ•ฉ์ด ๋ชฉํ‘œ๊ฐ’๋ณด๋‹ค ํฌ๋ฉด ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ๊ฐ์†Œ์‹œํ‚ค๊ณ , ์ž‘์œผ๋ฉด ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ต๋‹ˆ๋‹ค.
      • ๋ฐฐ์—ด์ด ์ •๋ ฌ๋œ ์ƒํƒœ๋ผ๋ฉด ์™ผ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚ค๋ฉด ๋” ํฐ ๊ฐ’์„ ๋”ํ•  ์ˆ˜ ์žˆ๊ณ , ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋ฅผ 1 ๊ฐ์†Œ์‹œํ‚ค๋ฉด ๋” ์ž‘์€ ๊ฐ’์„ ๋”ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • ๊ทธ ์™ธ ์ฃผ์˜์‚ฌํ•ญ
    • ์ˆ˜์˜ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 2000๊ฐœ๋กœ for๋ฌธ์„ ๋Œ๋ ค๋„ ๊ดœ์ฐฎ์€ ์ˆ˜์ž…๋‹ˆ๋‹ค.
    • ์š”์†Œ์˜ ๊ฐ’์€ ์ตœ๋Œ€ 1,000,000,000์œผ๋กœ longํ˜•์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
import java.util.*;

public class Main {
	public static void main(String[] args) {
    	Scanner sc = new Scanner(System.in);
        
        // ์ดˆ๊ธฐํ™”
        int n = sc.nextInt();
        long[] arr = new long[n];
       	for(int i=0; i<n; i++)
        	arr[i] = sc.nextLong();
            
        // ์ •๋ ฌ
        Arrays.sort(arr);
        
        int count = 0; //์ข‹์€ ์ˆ˜์˜ ๊ฐœ์ˆ˜
        // ์ˆœํšŒํ•˜๋ฉด์„œ ์ข‹์€ ์ˆ˜์ธ์ง€ ํ™•์ธ
        for(int i=0; i<n; i++) {
        	int left = 0;	// ์™ผ์ชฝ ํฌ์ธํ„ฐ๋Š” ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’๋ถ€ํ„ฐ
            int right = n-1; 	// ์˜ค๋ฅธ์ชฝ ํฌ์ธํ„ฐ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’๋ถ€ํ„ฐ
            
            while(left < right) {
            	// ์ž๊ธฐ ์ž์‹ ์€ ์ œ์™ธ(๋‹ค์Œ ์ธ๋ฑ์Šค๋กœ ์Šคํ‚ต)
                if(left==i || right==i) {
                	if(left==i) left++;
                    else right--;
                    continue; 
                }
                
                // ๋”ํ•œ ๊ฐ’ ํ™•์ธ
                long sum = arr[left] + arr[right];
                if(sum == arr[i]) {
                	count++;
                    break;
                } else if(sum > arr[i]) {
                	// ํ•ฉ์ด ๋” ํฌ๋‹ค๋ฉด ๋” ์ž‘์€ ์ˆ˜๋ฅผ ๋”ํ•ด์•ผํ•จ -> right๋ฅผ ํ•œ ์นธ ์•ž์œผ๋กœ
                    right--;
                } else if(sum < arr[i]) {
                	// ํ•ฉ์ด ์ž‘๋‹ค๋ฉด ๋” ํฐ ์ˆ˜๋ฅผ ๋”ํ•ด์•ผํ•จ -> left๋ฅผ ํ•œ ์นธ ๋’ค๋กœ
                    left++;
                }
            }
        }
        System.out.println(count);
    }
}

์ฐธ๊ณ ์ž๋ฃŒ

[Java/์•Œ๊ณ ๋ฆฌ์ฆ˜] ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Two Pointer Algorithm) ์ดํ•ดํ•˜๊ธฐ -1 : ์ข…๋ฅ˜, ํ™œ์šฉ๋ฐฉ์•ˆ

 

'โ˜•Java > ์ฝ”๋”ฉํ…Œ์ŠคํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java] ์ฝ”ํ…Œ์—์„œ ํšจ์œจ์ ์ธ ์ž…์ถœ๋ ฅ: BuffereredReader/Writer, StringTokenizer, StringBuilder + ๋ฐฑ์ค€ 15552  (1) 2025.11.23
[Java] ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP, Dynamic Programming) / ๋ฐฑ์ค€ 12865๋ฒˆ / ๋ฐฐ๋‚ญ ๋ฌธ์ œ  (0) 2025.11.13
[JAVA] ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ (๋ฐฑ์ค€ 12891๋ฒˆ)  (0) 2025.05.22
[JAVA] ํˆฌ ํฌ์ธํ„ฐ (๋ฐฑ์ค€ 2018๋ฒˆ, ๋ฐฑ์ค€ 1940๋ฒˆ)  (1) 2025.05.18
[JAVA] ๊ตฌ๊ฐ„ ํ•ฉ ๊ตฌํ•˜๊ธฐ (๋ฐฑ์ค€ 11659๋ฒˆ, ๋ฐฑ์ค€ 2042๋ฒˆ)  (0) 2025.05.17
'โ˜•Java/์ฝ”๋”ฉํ…Œ์ŠคํŠธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java] ์ฝ”ํ…Œ์—์„œ ํšจ์œจ์ ์ธ ์ž…์ถœ๋ ฅ: BuffereredReader/Writer, StringTokenizer, StringBuilder + ๋ฐฑ์ค€ 15552
  • [Java] ๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP, Dynamic Programming) / ๋ฐฑ์ค€ 12865๋ฒˆ / ๋ฐฐ๋‚ญ ๋ฌธ์ œ
  • [JAVA] ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ (๋ฐฑ์ค€ 12891๋ฒˆ)
  • [JAVA] ํˆฌ ํฌ์ธํ„ฐ (๋ฐฑ์ค€ 2018๋ฒˆ, ๋ฐฑ์ค€ 1940๋ฒˆ)
์†Œ์˜ ๐Ÿ€
์†Œ์˜ ๐Ÿ€
Hello World โœจ
  • ์†Œ์˜ ๐Ÿ€
    Soyoung's Dev Lab
    ์†Œ์˜ ๐Ÿ€
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • ๊ธ€์“ฐ๊ธฐ ๊ด€๋ฆฌ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (79)
      • ๐Ÿ“ข ๊ฒŒ์‹œํŒ (0)
      • ๐ŸŒฟSpring (20)
      • โ˜•Java (7)
        • ์ฝ”๋”ฉํ…Œ์ŠคํŠธ (7)
      • โš™๏ธ CS (26)
        • ๐Ÿ›œ ๋„คํŠธ์›Œํฌ (5)
        • ๐Ÿ“Š ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
        • ๐Ÿ–ฒ๏ธ์šด์˜์ฒด์ œ (9)
        • ๐Ÿ“š ์ž๋ฃŒ๊ตฌ์กฐ & ์•Œ๊ณ ๋ฆฌ์ฆ˜ (4)
      • ๐Ÿ“ค ๋ฐฐํฌ (4)
        • Docker (4)
        • AWS (0)
      • ๐Ÿ“ฐ ๊ธฐํƒ€ ๊ฐœ๋ฐœ ์ž๋ฃŒ (12)
      • ๐Ÿ–ฅ๏ธ ํ”„๋กœ์ ํŠธ (0)
      • ๐Ÿ‘ฉ‍๐Ÿ’ป ํ™œ๋™ & ํ›„๊ธฐ (1)
      • ๐Ÿต ์ด์•ผ๊ธฐ (2)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํƒœ๊ทธ
  • ๋งํฌ

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

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    Java
    ๋ฐฐํฌ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    docker
    Spring Security
    ๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ
    ์„œ๋ฒ„
    ์œ„ํด๋ฆฌ ํŽ˜์ดํผ
    ๋„คํŠธ์›Œํฌ
    ๊ธฐ์ˆ  ๋ฉด์ ‘
    ์ž๋ฃŒ๊ตฌ์กฐ
    GIT
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ์šด์˜์ฒด์ œ
    ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ
    Spring
    ๊ฐœ๋ฐœ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์†Œ์˜ ๐Ÿ€
[Java] ํˆฌ ํฌ์ธํ„ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ / ๋ฐฑ์ค€ 1253๋ฒˆ
์ƒ๋‹จ์œผ๋กœ

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