목차
백준 단계별로 풀어보기
25.10.06
12단계: 브루트 포스
2798번: 블랙잭
문제 링크 : https://www.acmicpc.net/problem/2798
문제 풀이
>> 문제를 풀기 위해 알아야 할 개념
- 브루트 포스 (무차별 대입)
: 암호학에서 무차별 대입 공격 (brute-force attack)은 특정한 암호를 풀기 위해 가능한 모든 값을 대입하는 것을 의미한다.
※ 공식 문서 - 위키백과
무차별 대입 공격 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 전자 프론티어 재단(EFF)에서 제작한 DES 무차별 대입 공격 하드웨어. 약 하루 안에 DES를 해독하는 것이 가능하다. 암호학에서 무차별 대입 공격(영어: brute-force at
ko.wikipedia.org
>> 풀이
- 카드의 개수와 목표 숫자를 입력 받아 그 중 목표 숫자를 int로 변환한다.
- 카드에 쓰여 있는 수를 입력 받고 수를 담을 int 배열을 선언한 다음, for 반복문을 통해 배열에 카드에 쓰여 있는 수를 담는다.
- 출력할 변수 result를 선언하고, 삼중 for문을 활용하여 모든 경우의 수 i, j, k에 대하여 arr[i] + arr[j] + arr[k] 값이 목표 숫자보다 작거나 같으면서 result보다 크다면 result 값을 갱신한다.
- 찾은 result 값을 출력한다.
정답 코드
class Backjoon
{
static void Main(string[] args)
{
string[] input = Console.ReadLine().Split();
int M = int.Parse(input[1]);
string[] input2 = Console.ReadLine().Split();
int[] arr = new int[input2.Length];
for (int i = 0; i < input2.Length; i++)
{
arr[i] = int.Parse(input2[i]);
}
int result = 0;
for (int i = 0; i < input2.Length - 2; i++)
{
for (int j = i + 1; j < input2.Length - 1; j++)
{
for (int k = j + 1; k < input2.Length; k++)
{
if (arr[i] + arr[j] + arr[k] <= M && arr[i] + arr[j] + arr[k] > result )
result = arr[i] + arr[j] + arr[k];
}
}
}
Console.WriteLine(result);
}
}'Development > Baekjoon' 카테고리의 다른 글
| [C#] 19532번: 수학은 비대면강의입니다 (0) | 2025.10.08 |
|---|---|
| [C#] 2231번: 분해합 (0) | 2025.10.07 |
| [C#] 24313번: 알고리즘 수업 - 점근적 표기 1 (1) | 2025.10.04 |
| [C#] 24267번: 알고리즘 수업 - 알고리즘의 수행 시간 6 (0) | 2025.10.03 |
| [C#] 24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5 (0) | 2025.10.02 |