SMALL

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

 

2798번: 블랙잭

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

www.acmicpc.net


  • 문제


  • 문제풀이

3중 for문을 사용하고 각 자리의 경우의 수가 겹치지 않게 범위를 설정해준다. 처음에는 조건문을 통해 겹치지 않게 했었다.

using System;

internal class Program
{
    
    public static void Main()
    {
        string[] input1 = Console.ReadLine().Split();
        string[] input2 = Console.ReadLine().Split();
        int sum = 0;
        int temp = 0;
        for(int i = 0; i < int.Parse(input1[0]); i++)
        {
            for(int j = 0; j < int.Parse(input1[0]); j++)
            {
                for(int k = 0; k < int.Parse(input1[0]); k++)
                {
                    if (int.Parse(input2[i]) != int.Parse(input2[j])&&int.Parse(input2[j]) != int.Parse(input2[k]) && int.Parse(input2[i]) != int.Parse(input2[k]))
                    {
                        temp = int.Parse(input2[i]) + int.Parse(input2[j]) + int.Parse(input2[k]);
                    }
                    if (sum <= temp && temp <= int.Parse(input1[1]))
                    {
                        sum = temp;
                    }
                }
            }
        }
        Console.WriteLine(sum);
    }
}

하지만 이렇게 하는 것보다 for문에서 범위를 제한하는것이 속도가 더 빠르게 나왔다.

 

 


  • 코드 1
using System;

internal class Program
{
    
    public static void Main()
    {
        string[] input1 = Console.ReadLine().Split();
        string[] input2 = Console.ReadLine().Split();
        int sum = 0;
        int temp = 0;
        for(int i = 2; i < int.Parse(input1[0]); i++)
        {
            for(int j = 1; j < i; j++)
            {
                for(int k = 0; k < j; k++)
                {                  
                        temp = int.Parse(input2[i]) + int.Parse(input2[j]) + int.Parse(input2[k]);
                    if (sum <= temp && temp <= int.Parse(input1[1]))
                    {
                        sum = temp;
                        break;
                    }
                }
            }
        }
        Console.WriteLine(sum);
    }
}

 


  • 후기

프로그래밍에 신경쓸게 아니라 수학적인 고민도 많이 필요할 것 같다.

LIST

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

[C#]백준 10870: 피보나치 수 5  (0) 2023.03.15
[C#]백준 2839번: 설탕 배달  (2) 2023.03.13
[C#]백준 1436번: 영화감독 숌  (0) 2023.03.13
[C#]백준 2231번: 분해합  (0) 2023.03.13
[C#]백준 16916번: 부분 문자열  (0) 2023.03.13

+ Recent posts