상세 컨텐츠

본문 제목

[백준_1953_사과나무] 골드5 python

자료구조 알고리즘/백준

by young1403 2022. 8. 25. 23:35

본문

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

 

19539번: 사과나무

첫 번째 줄에 모든 나무가 갊자가 바라는 높이가 되도록 물뿌리개를 통해 만들 수 있으면 “YES”를, 아니면 “NO”를 따옴표를 제외하고 출력한다.

www.acmicpc.net

  • [백준_1953_사과나무] 골드 5
    • 수학, greedy 기법으로 푸는 문제이다
    • 목표로 하는 사과나무의 높이가 주어지는데 1,2의 성장세가 주어지는 성장 약으로 이 높이를 해당 조건에 충족할 수 있는지 묻는 문제이다.
    • x : 우선 사과나무의 높이의 총합이 3으로 나누어져야 물이 동시에 주어지기 때문에 성장 속도가 1과 2가 되는 물을 주는 물뿌리개의 조건에 부합할 수 있다.
    • 그러고 나서가 조금 까다로울 수 있는데, 목표로 하는 나무 높이들의 총합에 3으로 나눈 몫보다 반례: (1) 1 2 1 2 3 3 3 3 , (2) 1 2 1 2 6 6 6두 번째 반례를 보면 x의 조건을 충족시키고, 2의 몫개수의 합이 3의 몫 갯수의 합보다 작으면 안 됨을 알 수 있다.
    • 첫 번째 반례를 보면 x의 조건을 충족시키고 , 2의 몫 개수의 합은 곧 3의 몫갯수의 합이라고 볼 수 있다
    • arr 배열의 값들을 2로 나눈 몫들의 합이 같거나 커야 한다.

 

n = int(input())
arr = list(map(int,input().split()))

a,b = divmod(sum(arr),3)    #3으로 나눈 몫과 나머지

if not b :
    cnt = 0
    for i in arr:
        cnt += i//2
    if cnt >= a:
        print("YES")
    else:
        print("NO")
else:
    print("NO")


관련글 더보기

댓글 영역