알고리즘

[algorithm] 백준 23322 - 초콜릿 뺏어 먹기 (파이썬)

hyuuny 2022. 7. 13. 11:22

📚 문제

입력

출력

입력 예시 1

4 2
1 2 2 3

출력 예시 1

4 3

입력 예시 2

2 1
5 5

출력 예시 2

0 0

🧑🏻‍💻 풀이 과정

  • 입력받은 초콜릿 개수를 오름차순 정렬하자.
  • 반복하면서 현재 초콜릿 개수가 이전 초콜릿 개수와 같거나 크고, 가장 작은 초코릿 개수보다 크다는 조건이 만족된다면
  • 현재 초콜릿 개수가 이전 초콜릿 개수와 같아질 때 까지 줄여주자.
  • while문이 끝나면 day를 1 증가시켜주자.
def take_away_chocolate(chocolate):
    day = 0
    cnt = 0
    min_chocolate_cnt = min(chocolate)
    for i in range(1, len(chocolate)):
        # 현재 초콜릿 개수가 이전 초콜릿 개수와 같거나 크고, 가장 작은 초코릿 개수보다 크다면..
        if chocolate[i - 1] <= chocolate[i] and min_chocolate_cnt < chocolate[i]:
            # 현재 초콜릿 개수가 이전 초콜릿 개수와 같아질 때 까지 줄여주자.
            while chocolate[i] > chocolate[i - 1]:
                chocolate[i] -= 1
                cnt += 1
            day += 1

    print(cnt, day)


n, k = map(int, input().split())
arr = list(map(int, input().rstrip().split()))
take_away_chocolate(sorted(arr))