※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 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

+ Recent posts