01
07
๋ฐ˜์‘ํ˜•

 

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.Scanner;

class Main{
    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int max = 0;
        for(int i=0; i<n;i++){
            arr[i] = sc.nextInt();
        }
        Arrays.sort(arr);
        for(int a=0;a<n; a++){
            for(int b=a;b<n; b++){
                for(int c=b;c<n; c++){
                    int tmp = arr[a]+arr[b]+arr[c];
                    int bs = Arrays.binarySearch(arr, tmp);
                    if(bs >= 0){
                        // ์ด๋Ÿฌ๋ฉด ๊ฐ’์ด ์žˆ๋‹ค๋Š” ์–˜๊ธฐ
                        max = Math.max(max, bs);
                    }
                }
            }
        }
        System.out.println(arr[max]);

        sc.close();
    }
}

์˜ค๋‹ต๋…ธํŠธ(ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ • ๋ฐ ๊ฐœ์„ ์ )

3์ค‘ for๋ฌธ์œผ๋กœ ๋‹ค ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์„ธ๋ฉด์„œ ํ•ฉ์„ ์ฐพ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ดค๋‹ค. ์งœ๋ฉด์„œ ์ด๊ฑฐ ๋ฌด์กฐ๊ฑด ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚ ํ…๋ฐ.. ํ–ˆ๋Š”๋ฐ ์ง„์งœ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚ฌ๋‹ค. ๊ทธ๋ž˜์„œ ์ข€ ๊ฒฝ์šฐ์˜์ˆ˜๋ฅผ ์ค„์—ฌ๋ณด๊ณ  ์ž ํ•œ๊ฒŒ ์„ธ ์ˆ˜ ํ•ฉ์ด ์ง‘ํ•ฉ ์ตœ๋Œ€๊ฐ’์„ ๋„˜์–ด๊ฐ€๋ฉด ์•„์˜ˆ break๋ฅผ ๋‚ด๋ฒ„๋ฆฌ๋Š” ์•„์ด๋””์–ด ์˜€๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์งœ๋„ 40% ๊ทผ์ฒ˜์—์„œ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค. ๋” ์ค„์—ฌ์•„ํ•  ๋“ฏ ํ•˜๋‹ค.

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

class Main{

    public static int binarySearch(int[] arr, int target){
        int l=0; int r = arr.length-1;
        while (l<=r){
            int m = (l+r)/2;
            if(arr[m]<target) l = m+1;
            else if(arr[m]>target) r = m-1;
            else return 1;
        }
        return 0;
    }

    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int max = 0;
        for(int i=0; i<n;i++){
            arr[i] = sc.nextInt();
        }
        Arrays.sort(arr);
        for(int a=0;a<n; a++){
            for(int b=a;b<n; b++){
                for(int c=b;c<n; c++){
                    int tmp = arr[a]+arr[b]+arr[c];
                    int bs = Arrays.binarySearch(arr, tmp);
                    if (tmp <= arr[arr.length-1]){
                        if(bs >= 0){
                            // ์ด๋Ÿฌ๋ฉด ๊ฐ’์ด ์žˆ๋‹ค๋Š” ์–˜๊ธฐ
                            max = Math.max(max, bs);
                        }
                    }else {
                        break;
                    }
                }
            }
        }
        System.out.println(arr[max]);

        sc.close();
    }
}

 

ํ•ด๊ฒฐ ํ•ด์•ผ๋  ๋ถ€๋ถ„์ด ์„ธ ์ˆ˜๋ฅผ ๊ณ ๋ฅด๋Š” ๋ฐฉ์‹์ด๋‹ค..!


์ •๋‹ต์ฝ”๋“œ

import java.io.FileInputStream;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

class Main{

    public static int binarySearch(int[] arr, int target){
        int l=0; int r = arr.length-1;
        while (l<=r){
            int m = (l+r)/2;
            if(arr[m]<target) l = m+1;
            else if(arr[m]>target) r = m-1;
            else return 1;
        }
        return 0;
    }

    public static void main(String[] args) throws Exception{
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int max = -1;
        for(int i=0; i<n;i++){
            arr[i] = sc.nextInt();
        }
        int[] set = new int[(n*(n+1))/2];
        int idx = 0;
        for(int i=0; i<n;i++){
            for(int j=i; j<n; j++){
                set[idx++] = arr[i]+arr[j];
            }
        }
        Arrays.sort(set);
        for(int x=0;x<n; x++){
            for(int c=0;c<n; c++){
                int tmp = arr[x]-arr[c];
                int bs = Arrays.binarySearch(set, tmp);
                if(bs >= 0){
                    max = Math.max(max, arr[x]);
                }
            }
        }
        System.out.println(max);

        sc.close();
    }
}

 

๋‘ ์ˆ˜์˜ ํ•ฉ์—์„œ ํ–ˆ์—ˆ๋˜ ์‹ ์ชผ๊ฐœ๊ธฐ๊ฐ€ ์—ฌ๊ธฐ์„œ๋„ ๋“ค์–ด๊ฐ„๋‹ค. a+b+c=x๋ฅผ a+b=x-c๋กœ ๋ฐ”๊ฟ”์„œ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์ธ๋ฐ, ์ด๋Ÿฌ๋ฉด ์‚ผ์ค‘ํฌ๋ฌธ ํ•˜๋‚˜๊ฐ€ ์ด์ค‘ํฌ๋ฌธ 2๊ฐœ๋กœ ์ชผ๊ฐœ์ ธ์„œ ๋ง‰๋Œ€ํ•œ ์‹œ๊ฐ„์  ์—ฌ์œ ๊ฐ€ ์ƒ๊ธด๋‹ค.

 

์ด์ง„ํƒ์ƒ‰ ๋Œ€์ƒ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ๋•Œ๋Š” ์„ธ ์ˆ˜์˜ ํ•ฉ์˜ ์ตœ๋Œ€๊ฐ’ ๊นŒ์ง€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผํ•˜๋‹ˆ๊นŒ n๊นŒ์ง€์˜ ํ•ฉ์„ ์ตœ๋Œ€ ํฌ๊ธฐ๋กœ ์žก์•„ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค. ์ˆ˜ ์„ธ๊ธฐ์—์„œ๋Š” ์ด์ง„ํƒ์ƒ‰์„ ๊ทธ๋ƒฅ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— Arrays.binarySearch()๊ฐ€ ์žˆ์–ด์„œ ์ด๋ฒˆ์—๋Š” ์ด๊ฑธ ์‚ฌ์šฉํ•ด๋ดค๋‹ค.

 

ํ’€๊ณ  ๋‚˜์„œ ๋“ฑ๊ธ‰์„ ๋ณด๋‹ˆ ๊ณจ๋“œ 4๋‹ค.. ์•„๋งˆ ์ด ์ƒ๊ฐ์˜ ์ „ํ™˜์ด ๊ณจ๋“œ๊ธ‰์ด๋ผ๋Š” ๋œป์ผ ๊ฒƒ ๊ฐ™๋‹ค.

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT