Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- jenkins
- 호석이두마리치킨
- Eclipse
- 자바
- Error fetching remote repo 'origin'
- 이클립스
- 2108_통계학
- 투에모스문자열
- Error
- 백준
- dockercompose
- Java
- 알고리즘
- 소가길을건너간이유6
- EC2
- 프로그래머스
- 20055
- 14466
- 설정
- docker
- 21278
- 날짜일수
- SpringBoot
- 2167. 2차원 배열의 합
- 별자리 만들기
- 이산수학
- to display the conditions report re-run your application with 'debug' enabled
- documentationpluginsbootstrapper
- 18222
- CMD
Archives
- Today
- Total
계단을 오르듯이
20950. 미술가 미미 본문
- 문제를 잘 읽자!!! => 7개까지가 색 혼합의 최대
- 조합으로 풀었고, 혼합이 최대 7개 까지이므로 조건절로 7개 이상이 되면 return해서 빠져나오게 했다.
package january.first;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class B_20950_미술가미미 {
static int Min = Integer.MAX_VALUE;
static int R, B, G;
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(in.readLine());
List<Color> list = new ArrayList<>();
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(in.readLine(), " ");
int r = Integer.parseInt(st.nextToken());
int g = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
list.add(new Color(r, g, b));
}
StringTokenizer st = new StringTokenizer(in.readLine(), " ");
R = Integer.parseInt(st.nextToken());
G = Integer.parseInt(st.nextToken());
B = Integer.parseInt(st.nextToken());
comb(0, 0, N, list, 0, 0, 0);
System.out.println(Min);
}
private static void comb(int cnt, int start, int N, List<Color> list, int mr, int mb, int mg) {
if (cnt >= 7) {
return;
}
for (int i = start; i < N; i++) {
mr += list.get(i).r;
mb += list.get(i).b;
mg += list.get(i).g;
if (cnt > 0) {
int diff = Math.abs(R - (mr / (cnt + 1))) + Math.abs(G - (mg / (cnt + 1)))
+ Math.abs(B - (mb / (cnt + 1)));
Min = Math.min(Min, diff);
}
comb(cnt + 1, i + 1, N, list, mr, mb, mg);
mr -= list.get(i).r;
mb -= list.get(i).b;
mg -= list.get(i).g;
}
}
static class Color {
int r, g, b;
public Color(int r, int g, int b) {
super();
this.r = r;
this.g = g;
this.b = b;
}
}
}
'알고리즘 > 백준_JAVA' 카테고리의 다른 글
17406. 배열 돌리기 4 (0) | 2022.01.06 |
---|---|
17472. 다리 만들기 2 (0) | 2022.01.06 |
4811. 알약 (0) | 2022.01.05 |
17073. 나무 위의 빗물 (0) | 2021.12.31 |
17478. 재귀함수가 뭔가요? (0) | 2021.12.31 |