백준 2798
블랙잭 문제이다.
알고리즘은 브루트포스 알고리즘. 그냥 싹 다 돌려보는거에 이런 거창한 이름이 붙은 이유가 뭘까?
근데 틀렸다. 예시는 잘 나오는데 반례를 잘 찾아서 다시 풀어보자.
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 |