(Swift) 백준 2798 블랙잭

SteadySlower·2022년 5월 26일
0

Coding Test

목록 보기
47/305

2798번: 블랙잭

let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let N = input[0], M = input[1]

let cards = readLine()!.split(separator: " ").map { Int(String($0))! }
var result = 0

for i in 0..<cards.count {
    for j in (i + 1)..<cards.count {
        for k in (j + 1)..<cards.count {
            let sum = cards[i] + cards[j] + cards[k]
            if (M - sum) >= 0 && M - sum < M - result {
                result = sum
            }
        }
    }
}

print(result)
  1. 브루탈 포스 (모든 경우의 수를 따져보기)를 적용해야 하는 문제입니다.
    1. 카드를 고를 때 특정한 규칙이 없음
    2. N이 100 밖에 안됨 (3중 반복문을 사용해도 1000000번의 연산 밖에 안됨)
  2. 파이썬은 combination이라는 유용한 메소드가 있었는데 스위프트에는 삼중 반복문을 사용해서 풀어야 합니다.
  3. 3카드의 합이 아래 조건을 만족하면 result에 저장합니다.
    1. M 보다 작고
    2. 이전에 뽑은 3카드의 합 보다 M에 가까울 때
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글