※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 3205번 문제인 fusnote이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/3205
3205번: fusnote
The first line of input contains two integers: N, a number of lines in a document (2 ≤ N ≤ 1000), and K, maximal number of lines a page of a book may contain (2 ≤ K ≤ 1000), separated by a space character. The second line of input contains an integ
www.acmicpc.net
한 페이지에 넣을 각주를 모두 페이지의 가장 아래쪽에 집어넣어가면서, 앞쪽 페이지부터 그리디하게 최대한 많은 줄을 채워넣는 것으로 문제를 해결할 수 있다.
위와 같이 채워넣는 과정을 시뮬레이션하는 코드를 작성해 문제의 답을 구하자.
한 줄에 여러 각주가 달릴 수 있고, 각 줄에 각주가 달리더라도 각주가 아닌 원래의 줄이 사라지는 건 아니므로 줄의 개수를 셀 때 유의해 구현하자.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
int N, K, F;
int footnotes[1001];
int pagecnt, linecnt;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> K >> F;
while (F--) {
int x, lines; cin >> x >> lines;
footnotes[x] += lines;
}
for (int i = 1; i <= N; i++) {
if (linecnt + footnotes[i] + 1 > K) pagecnt++, linecnt = footnotes[i] + 1;
else linecnt += footnotes[i] + 1;
}
cout << pagecnt + 1;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 7791 // C++] KBTU party (0) | 2023.06.22 |
---|---|
[BOJ 7787 // C++] 빨간 칩, 초록 칩 (0) | 2023.06.21 |
[BOJ 3108 // C++] 로고 (1) | 2023.06.19 |
[BOJ 13022 // C++] 늑대와 올바른 단어 (0) | 2023.06.18 |
[BOJ 2878 // C++] 캔디캔디 (0) | 2023.06.17 |