combinations 쓰는 문제가 많았다..! 1주차 때 정리했던 내용 참고.. 이제 완전 익숙해졌당

2798: 블랙잭

풀이

# 블랙잭

import sys
from itertools import combinations

input = sys.stdin.readline

n, m = map(int, input().split())
nums = list(map(int, input().split()))

sums = list()
for x, y, z in combinations(nums, 3):
  sums.append(x + y + z)
sums.sort()

result = 0
for sum in sums:
  if sum > m:
    break
  result = sum

print(result)

4673: 셀프 넘버

풀이

# 셀프 넘버

nums = set(range(1, 10001))
generated_nums = set()  # 생성자가 있는 수
def d(n):
  return n + sum(map(int, str(n)))

for num in range(1, 10001):
  generated_nums.add(d(num))  # d(n)으로 생성된 수 = 생성자가 있는 수!

self_nums = nums - generated_nums  # 셀프 넘버 = 생성자가 없는 수 = 1~10000 - 생성자 있는 수

for num in sorted(self_nums):
  print(num)

1065: 한수