Python&Dev/Python

Combination, CheckBools / 1978, 2798

SeokjunMan 2024. 5. 15. 17:49

백준 코딩 골드마스터를 향하여!

 

 

오늘 풀었던 문제 

 

1978 소수 찾기 [복습]

2798 블랙잭 변형

 

 

 

 

1978 - 소수 찾기

 

개념

True / False 특정조건 check -> Count 하기

 

# 개념
# True/False로 특정조건 체크 후 카운트 방법

# source 1
lenth = int(input())
num = list(map(int,input().split()))
cnt = 0

for i in num:
    if i == 1:
        continue
    is_prime = True
    for j in range(2,i):
        if i % j == 0:
            is_prime = False
            break
    if is_prime == True:
        cnt+=1
print(cnt)

# source 2
n = input()
num = list(map(int,input().split()))
prime_cnt = 0
for i in num:
    cnt = 0
    for j in range(1,i+1):
        if i % j ==0:
            cnt+=1
    if cnt == 2:
        prime_cnt += 1

print(prime_cnt)

 

 

 

2798 - 블랙잭변형

 

개념

# combination(list,요소갯수), 타갯이 더 작을때 변수 갱신방법 - > 무한대변수 시작

 

combination(list,요소갯수)

이 메서드는 해당 리스트의 요소갯수만큼 묶어서 튜플형태로 반복자를 반환한다.

만약 리스트형태로 반환하고싶으면 아래처럼 하면 된다.

for i in combinations(num_list,3):
   i = list(i)
   
   print(i)
 

 

 
#  https://www.acmicpc.net/problem/2798
# 블랙잭
# 리스트 넘버 중 3개를 뽑아 M과 가장 근접한 조합의 합

from itertools import combinations

num, m = map(int, input().split()) 
num_list = list(map(int,input().split()))

a = float("inf") 
b = 0 
for i in combinations(num_list,3):
    t = sum(i)
    if 0 <= m - t < a: 
    	a = m - t      # 더 작은 a 갱신
        b = t
    if a < b:
        c = t

print(c)