티스토리 뷰

 

문제는 위와 같으며 우선 주어지는 카드의 수가 100 이하이기 때문에 단순하게 모든 경우의 수를 다 구하는 3중 for 문을 사용하여 문제를 풀었습니다.

 

파이썬 코드는 다음과 같습니다.

from sys import stdin

N, M = map(int, stdin.readline().split())
cards = list(map(int, stdin.readline().split()))

result = 0
length = len(cards)

for i in range(length):
    for j in range(i+1, length):
        for k in range(j+1, length):
            tmp = cards[i] + cards[j] + cards[k]

            if M >= tmp > result:
                result = tmp

print(result)

 

자바 코드는 다음과 같습니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] nm = br.readLine().split(" ");
        int N = Integer.parseInt(nm[0]);
        int M = Integer.parseInt(nm[1]);
        int[] cards = new int[N];
        String[] inputs = br.readLine().split(" ");

        for (int i = 0; i < cards.length; i++) {
            cards[i] = Integer.parseInt(inputs[i]);
        }

        int result = 0;
        for (int i = 0; i < cards.length; i++) {
            for (int j = i + 1; j < cards.length; j++) {
                for (int k = j + 1; k < cards.length; k++) {
                    int sum = cards[i] + cards[j] + cards[k];
                    if (sum <= M && sum > result) {
                        result = sum;
                    }
                }
            }
        }

        System.out.println(result);
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함