응애개발자
article thumbnail
728x90

문제

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

 

 

접근 방법

1. N개의 카드 중에서 3장을 골라서 M이랑 같거나 작되 제일 가까운 수를 만드는 문제입니다.

2. 카드의 수는 최대 100개이므로 완전탐색을 돌려도 가능하다는 생각을 했습니다.(O^3)

 

코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;

public class Main {
    private static StringBuilder sb;
    private static BufferedReader br;
    private static StringTokenizer st;
    private static int N,M;
    private static int[] arr;
    private static int sum = 0;

    //입력
    public static void input() throws Exception {
        br = new BufferedReader(new InputStreamReader(System.in));
        sb = new StringBuilder();

        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());

        M = Integer.parseInt(st.nextToken());

        arr = new int[N];
        st = new StringTokenizer(br.readLine());
        for(int i = 0 ; i < N ; i++){
            arr[i] = Integer.parseInt(st.nextToken());
        }
    }

    //실행
    public static void process() {
        for(int i = 0 ; i < N ; i++){
            for(int j = 0 ; j < N ; j++){
                if(i==j) continue;
                for(int k = 0 ; k < N ; k++){
                    if( i==k || j==k || i==k) continue;

                    if(arr[i]+arr[j]+arr[k] <= M){
                        sum = Math.max(sum,arr[i]+arr[j]+arr[k]);
                    }
                }
            }
        }
        System.out.println(sum);
    }


    public static void main(String[] args) throws Exception {
        input();
        process();
    }
}
profile

응애개발자

@Eungae-D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!