728x90
문제 |
2798번: 블랙잭
첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장
www.acmicpc.net
문제 해결
부른 값 보다 크지 않은 가까운 값 뽑거나, 같은 값을 출력해야 한다.
3중 for문으로 카드 3장을 선택해 합하고, 맞는 값인지 확인하기.
코드
var info: [Int] = readLine()!.split(separator: " ").map{Int($0)!}
var card: [Int] = readLine()!.split(separator: " ").map{Int($0)!}.sorted(by: <)
var answer: Int = 0
print(info)
print(card)
for first in 0..<info[0] {
for second in first+1..<info[0] {
for third in second+1..<info[0] {
let result = card[first] + card[second] + card[third]
if result <= info[1] {
answer = result > answer ? result : answer
}
}
}
}
print(answer)
문제 해결 중 어려웠던 것
첫 번째로는 문제를 잘 안 읽었던 거,,, 부른 값 보다 큰 값은 들어가면 안 되는 걸 몰랐다.
두 번째로 항상 프로그래머스에서만 풀어보다 백준에 오니까 print로 답을 띄우는 걸 깜빡하고 위 코드처럼...
확인용 print 코드가 있는 채로 제출해버렸다. 난 내가 뭐 잘못해서 틀린 줄 ㅠㅠ
백준도 빨리 익숙해져야겠다.
728x90