백준 2798

Algorithm|2023. 8. 18. 20:00

블랙잭 문제이다.

알고리즘은 브루트포스 알고리즘. 그냥 싹 다 돌려보는거에 이런 거창한 이름이 붙은 이유가 뭘까?

근데 틀렸다. 예시는 잘 나오는데 반례를 잘 찾아서 다시 풀어보자.

3중 for문 같은 코드 더럽게 만드는걸 굉장히 싫어하는데 이것도 고칠 방법을 찾아보고 싶다.

 

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

 

2798번: 블랙잭

첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장

www.acmicpc.net

using System;

namespace BlackJack
{
    class b2798
    {
        static void Main(string[] args)
        {
            string[] input = Console.ReadLine().Split();
            string[] num = Console.ReadLine().Split();

            int[] num_list = new int[int.Parse(input[0])];
            for (int i = 0; i < num.Length; i++)
            {
                num_list[i] = int.Parse(num[i]);
            }

            b2798 sol = new b2798();
            int s = sol.solution(int.Parse(input[1]), num_list);
            Console.WriteLine(s);
        }
        public int solution(int target_number, int[] list)
        {
            int sol = 0;

            for(int i = 0; i < list.Length-2; i++)
            {
                for(int j = i+1; j < list.Length-1; j++)
                {
                    for(int k = i+2; k < list.Length; k++)
                    {
                        int sum = list[i] + list[j] + list[k];
                        if((sum <= target_number) && (sum > sol))
                        {
                            sol = sum;
                        }
                    }
                }
            }

            return sol;
        }
    }
}

'Algorithm' 카테고리의 다른 글

백준 1149  (0) 2023.08.20
백준 11866  (0) 2023.08.19
백준 12789  (0) 2023.08.19
백준 2839  (0) 2023.08.18
시작한 계기  (0) 2023.08.18

댓글()