백준|11509번|풍선 맞추기

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
20/136

문제설명
화살을 쏴서 풍선을 모두 맞추는데 최소 몇개의 화살이 필요한지 찾는 문제입니다.

작동 순서
1.풍선의 개수를 입력받는다.
2.풍선의 높이들을 입력받는다.
3.풍선이 있는 높이에 화살이 없으면 화살을 쏴서 그 풍선을 맞춘다.
4.풍선이 있는 높이에 화살이 있으면 그 화살이 풍선을 맞추고 높이가 낮아진다.
5.총 사용한 화살의 개수를 출력한다.

소스코드

import sys
n = int(sys.stdin.readline())
balloon = list(map(int, sys.stdin.readline().split()))
arrow = [0 for i in range(max(balloon))]
i = 0
count = 0
while i < n:
    if arrow[balloon[i]-1] == 0:
        if balloon[i] != 1:
            arrow[balloon[i]-2] += 1
        count += 1
    else:
        if balloon[i] == 1:
            arrow[0] -= 1
        else:
            arrow[balloon[i]-1] -= 1
            arrow[balloon[i]-2] += 1
    i += 1
print(count)

후기
지금까지 풀어본 문제들중 가장 어려웠던것 같습니다. 답만 구하는것은 금방 해낼수 있었지만 시간제한으로 인해서 정답처리가 되지 않았고 이것저것 해보다가 거의 3시간 가까이 걸려서 문제를 푼 것 같습니다.

profile
INTP 개발자 지망생

0개의 댓글