팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (74)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (2)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 하단네비게이션바
  • binding
  • 문자열
  • 안드로이드
  • BFS
  • 이분탐색
  • LEVEL2
  • 프로그래머스
  • 의존성 주입
  • Android
  • 골드
  • Kotlin
  • 구현
  • compose
  • 자바
  • flutter
  • 실버
  • DFS
  • programmers #프로그래머스
  • java
  • TestCode
  • 해쉬맵
  • 완전탐색
  • 정렬
  • mvvm
  • ArcitecturePattern
  • programmers
  • 코틀린
  • 백준
  • CustomView

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[백준] - 도영이가 만든 맛있는 음식 2691
PS/백준

[백준] - 도영이가 만든 맛있는 음식 2691

2023. 2. 28. 00:48

 


https://www.acmicpc.net/problem/2961

 

2961번: 도영이가 만든 맛있는 음식

첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은

www.acmicpc.net


  • N의  범위가 1 ~ 10 이여서 조합 완전 탐색으로 해결했습니다.

[Java]

import java.io.*;
import java.util.*;

public class Main {

    static long ans = Integer.MAX_VALUE;

    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());

        int arr[][] = new int[n][2];
        boolean visited[] = new boolean [n];

        for(int i=0; i<n; i++){
            String input[] = br.readLine().split(" ");
            arr[i][0] = Integer.parseInt(input[0]);
            arr[i][1] = Integer.parseInt(input[1]);
        }

        for(int i=1; i<=n; i++){
            combination(arr, visited, 0, i);
            visited = new boolean [n];
        }

        System.out.println(ans);
    }

    public static void combination(int arr[][], boolean visited[], int start, int r){
        if(r == 0){
            int sin = 1;
            int bitter = 0;

            for(int i=0; i<arr.length; i++){
                if(visited[i]) {
                    sin *= arr[i][0];
                    bitter += arr[i][1];
                }
            }

            ans = Math.min(ans, Math.abs(sin - bitter));
            return;
        }

        for(int i=start; i<arr.length; i++){
            if(!visited[i]){
                visited[i] = true;
                combination(arr, visited, i + 1, r - 1);
                visited[i] = false;
            }
        }
    }

}


'PS > 백준' 카테고리의 다른 글

백준 - 문자열 집합 조합하기 25328  (0) 2023.03.03
백준 - 캠프 준비 16938  (0) 2023.03.01
[백준] - Australian Voting (호주식 투표법) 4419  (0) 2023.02.13
[백준] - 피보나치함수 (1003)  (0) 2022.11.24
[백준] 영상처리 21938  (0) 2022.11.11
    'PS/백준' 카테고리의 다른 글
    • 백준 - 문자열 집합 조합하기 25328
    • 백준 - 캠프 준비 16938
    • [백준] - Australian Voting (호주식 투표법) 4419
    • [백준] - 피보나치함수 (1003)
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바