본문 바로가기
코딩 테스트/백준

블랙잭

by ornni 2024. 5. 31.
728x90
반응형

첫번째 코드

 

목표와 두 개의 숫자의 차이 중 차이가 작은 숫자를 불러오는 함수를 작성한 후,

3개의 숫자를 더해서 해당 숫자와 답으로 가정된 숫자와 비교 후 업데이트 하는 과정을 반복하여 코드를 작성하였다.

 

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
A = list(map(int, input().split()))
num = 0
diff1 = 0
diff2 = 0
answer = 0

def diff_min (x, y):
    global m
    diff1 = m - x
    diff2 = m - y
    if diff1 < diff2:
        return x
    else:
        return y

for i in range(n):
    if answer == m:
        break
    for j in range(i+1, n):
        if answer == m:
            break
        for k in range(j+1, n):
            num = A[i] + A[j] + A[k]
            answer = diff_min(answer, num)
            if answer == m:
                break

print(answer)

 

틀림!


두번째 코드

 

"첫째 줄에 M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합" 이 부분에서 문제가 생겼을 것이다.

그렇기 때문에 만약에 세 숫자의 합이 m보다 크면 진행하지 않고 넘어가는 continue문을 사용해야겠다!

 

import sys
input = sys.stdin.readline

n, m = map(int, input().split())
A = list(map(int, input().split()))
num = 0
diff1 = 0
diff2 = 0
answer = 0

def diff_min (x, y):
    global m
    diff1 = m - x
    diff2 = m - y
    if diff1 < diff2:
        return x
    else:
        return y

for i in range(n):
    if answer == m:
        break
    for j in range(i+1, n):
        if answer == m:
            break
        for k in range(j+1, n):
            num = A[i] + A[j] + A[k]
            if num > m:
                continue
            answer = diff_min(answer, num)
            if answer == m:
                break

print(answer)

 

통과! :) 뭔가 뿌듯 호홍


링크

https://github.com/ornni/programmers/tree/main/%EB%B0%B1%EC%A4%80/Bronze/2798.%E2%80%85%EB%B8%94%EB%9E%99%EC%9E%AD

 

programmers/백준/Bronze/2798. 블랙잭 at main · ornni/programmers

repository for recording Programmers Algorithm problem solving - ornni/programmers

github.com

 

반응형

'코딩 테스트 > 백준' 카테고리의 다른 글

타일 채우기 4  (0) 2024.06.23
나이 계산하기  (0) 2024.06.16
플러그  (0) 2024.05.13
일곱 난쟁이  (0) 2024.05.10
직사각형에서 탈출  (2) 2024.05.09