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๋ค.. ์๋ง ์ด ์๊ฐ์ ์ ํ์ด ๊ณจ๋๊ธ์ด๋ผ๋ ๋ป์ผ ๊ฒ ๊ฐ๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์! ๋ก๊ทธ์ธ ์ํด๋ ๋ฉ๋๋ค ^_^
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 10814: ๋์ด์ ์ ๋ ฌ (0) | 2024.01.09 |
---|---|
[BOJ][JAVA] 10816: ์ซ์ ์นด๋ 2 (0) | 2024.01.08 |
[BOJ][JAVA] 1920: ์ ์ฐพ๊ธฐ (0) | 2024.01.07 |
[BOJ][JAVA] 3085: ์ฌํ ๊ฒ์ (0) | 2024.01.06 |
[BOJ][JAVA] 10431: ์ค์ธ์ฐ๊ธฐ (0) | 2024.01.04 |