개인사
[G5] 백준 11509번 풍선 맞추기 C++ 그리디 알고리즘 본문
728x90

리뷰

https://www.acmicpc.net/problem/11509
골드 난이도 문제는 아닌 것 같다. 별도로 정렬이 필요한 그리디도 아니고 단순 아이디어 구현인듯
전역 변수
- N : 배열의 최대 크기를 정의할 상수 변수
- cnt : 높이별 풍선 개수를 저장할 배열
- n : 풍선의 개수를 저장할 변수
함수
없음
문제풀이
- n값을 입력 받고, 변수 ans를 0으로 초기화한다.
- n개의 풍선 높이를 매번 변수 h에 입력받는다.
- cnt[h+1]이 1이상이면 cnt[h+1]을 감소시키고, cnt[h]를 증가시킨다.
- cnt[h+1]이 0이면 cnt[h]를 증가시키고, ans를 증가시킨다.
- ans에 저장된 값을 출력한다.
트러블 슈팅
없음
참고 사항
- 현재 입력받은 풍선의 높이보다 1더 높은 풍선이 있는 경우 현재 풍선은 자동으로 터뜨릴 수 있다.
- 현재 입력받은 풍선의 높이보다 1더 높은 풍선이 없는 경우 별도의 화살을 던져주어야 현재 풍선을 터뜨릴 수 있다.
- 모든 풍선을 터뜨리는 작업은 왼쪽에서 오른쪽이므로 순서를 고려해주어야 한다.
정답 코드
#include<iostream>
using namespace std;
const int N = 1e6 + 1;
int cnt[N];
int n;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n;
int ans = 0;
for (int i = 0; i < n; ++i) {
int h; cin >> h;
if (cnt[h + 1]) {
--cnt[h + 1];
++cnt[h];
}
else {
++cnt[h];
ans++;
}
}
cout << ans;
}
728x90
'알고리즘 공부 > C++' 카테고리의 다른 글
| [P5] 백준 3895번 그리고 하나가 남았다 C++ 세그먼트 트리 (0) | 2025.11.02 |
|---|---|
| [G5] 백준 13164번 행복 유치원 C++ 그리디 알고리즘, 우선순위 큐 (0) | 2025.11.02 |
| [G5] 백준 20208번 진우의 민트초코우유 C++ 백트래킹 (0) | 2025.10.31 |
| [G4] 백준 25515번 트리 노드 합의 최댓값 C++ 트리, 다이나믹 프로그래밍 (0) | 2025.10.30 |
| [G2] 백준 1826번 연료 채우기 C++ 그리디 알고리즘, 우선순위 큐 (0) | 2025.10.30 |
