본문 바로가기
알고리즘/그리디

[백준][Python] 11509 풍선 맞추기

by 임짠짠 2022. 4. 13.
반응형
 

11509번: 풍선 맞추기

첫 번째 예제 에서 [5,4,3] 을 터트리고 [2,1]을 터트리면 모든 풍선을 터트릴 수 있으므로 최소한 2개의 화살을 필요로 한다.

www.acmicpc.net

 

코드

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

arrow = [0] * 1000001
cnt = 0
for i in range(n):
    if arrow[n_list[i]] == 0:
        cnt += 1
        arrow[n_list[i]-1] += 1
    else:
        arrow[n_list[i]] -= 1
        arrow[n_list[i]-1] += 1
print(cnt)

 

설명

발사된 화살의 위치를 배열을 이용하여 표시해주었다. 만약 주어진 풍선의 높이에 화살이 존재하면 배열에서 화살의 위치를 바꿔준다.

만약 화살이 존재하지 않는다면 필요한 화살의 수를 1만큼 증가시켜주고 화살의 위치를 (해당 풍선의 높이 - 1)에 놓는다. 

화살의 위치를 바꿔줄 때 배열에서 값을 1씩 계속 더해줘야 된다. 그래야 같은 위치에 풍선이 여러 개 위치할 때의 상황을 제대로 구현할 수 있다.

 

 

반응형

댓글