일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 플러터 개발
- 스프링
- Kafka
- 기술면접공부
- K8S
- 프로그래머스
- nestjs
- 코테준비
- 자료구조공부
- 스프링 공부
- JPA 공부
- JPA
- Flutter
- nestjs스터디
- JPA스터디
- 기술공부
- 코테공부
- querydsl
- nestjs공부
- JPA공부
- JPA예제
- DDD
- 스프링부트
- 스프링공부
- 알고리즘공부
- 카프카
- 플러터 공부
- 스프링부트공부
- 자바공부
- Axon framework
- Today
- Total
DevBoi
[브루트포스] 백준 - 2798 본문
package com.smith.BruteForce;
import java.util.*;
public class BOJ2798 {
static int N =500;
static List<Integer> answerList = new ArrayList<>();
static int answer= Integer.MAX_VALUE;
static int[] arr = {93,181,245,214,315,36,185,138,216,295};
static boolean[] check = new boolean[10];
public static void main(String[] args) {
sol(0);
System.out.println(answer);
}
public static void sol(int num)
{
if(answerList.size() == 3)
{
int target = N;
for(Integer a : answerList)
{
target = target - a;
}
if(answer > Math.abs(target))
answer = Math.abs(target);
}
else
{
for(int i=num;i<arr.length;i++)
{
if(!check[i])
{
answerList.add(arr[i]);
check[i] = true;
sol(num+1);
answerList.remove(answerList.size()-1);
check[i] = false;
}
}
}
}
}
카드가 중복이되면 안되고, 재귀를 사용하여, 123,234, 124 이런식으로 체크를 해야하기 때문에
별도 방문 배열을 만들어서 체크한다.
재귀를 타고 난뒤에는, 방문 함수와 listadd를 원상복귀 시켜준다.
'Algorithm > [BruteForce]' 카테고리의 다른 글
[브루트 포스] 백준 - 9663 (0) | 2021.10.18 |
---|---|
[브루트 포스] 백준 - 2309 (0) | 2021.10.14 |
[브루트 포스] 백준 - 7568 (0) | 2021.10.14 |
[브루트 포스] 백준 - 2231 (0) | 2021.10.13 |
[브루트포스] 백준 - 1065 (0) | 2021.10.12 |