반응형
코드
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씩 계속 더해줘야 된다. 그래야 같은 위치에 풍선이 여러 개 위치할 때의 상황을 제대로 구현할 수 있다.
반응형
'알고리즘 > 그리디' 카테고리의 다른 글
[백준][Python] 1092번 배 (0) | 2022.04.28 |
---|---|
[백준][Python] 19598번 최소 회의실 개수 (0) | 2022.04.27 |
[백준][Python] 11000번 강의실 배정 (0) | 2022.04.12 |
[백준][Python] 21758번 꿀 따기 (0) | 2022.04.11 |
[백준][Python] 21314번 민겸 수 (0) | 2022.04.08 |
댓글