30802: 웰컴 키트 - Python

beaver.zip·2024년 12월 2일
0

[알고리즘] 백준

목록 보기
8/45

문제

https://www.acmicpc.net/problem/30802

풀이 1: 정직한 풀이

N = int(input())
sizes = map(int, input().split())
T, P = map(int, input().split())

cnt = 0
for size in sizes:
    if size == 0: 
        continue
    elif size % T == 0:
        cnt += size // T
    else:
        cnt += size // T + 1

print(cnt)
print(N//P, N%P)

오늘 뭔가 머리가 안돌아서 이렇게 풀었다.

풀이 2: list comprehension + ceiling 함수

N = int(input())
sizes = map(int, input().split())
T, P = map(int, input().split())

cnt = sum((size + T - 1) // T for size in sizes if size > 0)

print(cnt)
print(N//P, N%P)

풀이 1에 내가 좋아하는 list comprehension을 적용해보고자 했으나, 마땅한 방법이 생각나지 않아 GPT 4o 형님께 여쭤보았다.
(프롬프트: 위 코드의 for문을 list comprehension으로 대체한다면?)

역시 잘 짜주신다.

풀이 3: ceil 함수 (참고)

from math import ceil

N = int(input())
sizes = map(int, input().split())
T, P = map(int, input().split())
cnt = sum([ceil(size/T) for size in sizes])

print(cnt)
print(N//P, N%P)

ceiling 함수를 구현하기 위해 math.ceil() 함수를 사용하였다.


오늘의 교훈~!

  • ceil(a/b) == (a+b-1) // b
  • math 라이브러리를 익혀보자.
profile
NLP 일짱이 되겠다.

0개의 댓글