๐ ๋ฌธ์
https://www.acmicpc.net/problem/2798
๐ ์์ด๋์ด
1. ์ฌ๊ท์ ํ์ด๋ ์ซ์ 3๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ณผ์ ์ด ์กฐํฉ๊ณผ ๊ฐ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐฉ์์ ์ด์ฉํ์์ต๋๋ค.
2. ๋ฐ๋ณต๋ฌธ ํ์ด๋ ์ซ์ 3๊ฐ๋ฅผ ๊ณ ๋ฅด๋ ๊ณผ์ ์ 3์ค ํฌ๋ฌธ์ ์ด์ฉํด์ arr์์ i, j, k์ซ์๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ๋ํด์ ๋ชฉํฏ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๐ ํ์ด
1. ์ฌ๊ท์
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class blackjack2796 {
private static int nearM = 0, m, n;
private static int[] arr;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
n = Integer.parseInt(st.nextToken());
m = Integer.parseInt(st.nextToken());
arr = Arrays.stream(br.readLine().split(" ")).mapToInt(i -> Integer.parseInt(i)).toArray();
dfs(0, 0, 0);
System.out.println(nearM);
}
public static void dfs(int depth, int sum, int start) {
if (depth == 3) {
if (Math.abs(nearM - m) > Math.abs(m - sum) && sum<=m) {
nearM = sum;
}
return;
}
for (int i = start; i < n; i++) {
dfs(depth + 1, sum + arr[i], i + 1);
}
}
}
2. ๋ฐ๋ณต๋ฌธ
package com.example.javaprojtectest2.boj.bruteforce;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class blackjack2796_2 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
st = new StringTokenizer(br.readLine());
int nearM = 0;
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int[] arr = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) { //์ค๋ณต๋ ์ซ์๊ฐ ๋์ฌ ์ ์๊ธฐ ๋๋ฌธ์ i๋ฒ์งธ ์ซ์ ์ดํ์ ๋ํด์
for (int k = j + 1; k < n; k++) {
int sum = arr[i]+arr[j]+arr[k]; //์ซ์ 3๊ฐ
if (sum <= m && Math.abs(sum - m) < Math.abs(m - nearM)) {
nearM = sum;
}
}
}
}
System.out.println(nearM);
}
}
'๋ฐฑ์ค(boj)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA]1802 ์ข ์ด์ ๊ธฐ ๋ถํ ์ ๋ณต (0) | 2023.07.12 |
---|---|
[JAVA]17829 222 ํ๋ง - ๋ถํ ์ ๋ณต (0) | 2023.07.12 |
[JAVA]1527 ๊ธ๋ฏผ์์ ๊ฐ์ (์์ ํ์) (0) | 2023.07.04 |
[JAVA]19236 ์ฒญ์๋ ์์ด, ๊ณจ๋2 ์๋ฎฌ๋ ์ด์ (0) | 2023.06.30 |
[JAVA]1189 ์ปด๋ฐฑํ, ์ค๋ฒ1 (0) | 2023.06.30 |