๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Coding Test/๋ฐฑ์ค€(BOJ)

[BOJ] ๋ฐฑ์ค€ #3985. ๋กค ์ผ€์ดํฌ

๐ŸŽจ ๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ: https://www.acmicpc.net/problem/3985

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜: ๊ตฌํ˜„
  • ๋‚œ์ด๋„: Bronze 1
๋”๋ณด๊ธฐ

๊ธธ์ด L๋ฏธํ„ฐ ์งœ๋ฆฌ ๋กค์ผ€์ดํฌ๋ฅผ ๋ฐฉ์ฒญ๊ฐ N๋ช…์—๊ฒŒ ๋‚˜๋ˆ ์ฃผ๋ ค๊ณ  ํ•œ๋‹ค.

1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€์˜ ๋ฐฉ์ฒญ๊ฐ๋“ค์€ ์ฐจ๋ก€๋Œ€๋กœ ๊ฐ๊ฐ ์›ํ•˜๋Š” ์กฐ๊ฐ์„ ๋ฒ”์œ„ ์กฐ๊ฐP๋ถ€ํ„ฐ~์กฐ๊ฐK๊นŒ์ง€ ๊ฐ€์ ธ๊ฐ„๋‹ค.

์ด๋•Œ ์ด๋ฏธ ๊ฐ€์ ธ๊ฐ„ ์กฐ๊ฐ์€ ๋’ท์‚ฌ๋žŒ์ด ์›ํ•˜๋”๋ผ๋„ ๋ฐ›์ง€ ๋ชปํ•œ๋‹ค.

๊ฐ€์žฅ ๋งŽ์€ ์กฐ๊ฐ์„ ์›ํ–ˆ๋˜ ๋ฐฉ์ฒญ๊ฐ์˜ ๋ฒˆํ˜ธ, ์‹ค์ œ๋กœ ๊ฐ€์žฅ ๋งŽ์€ ์กฐ๊ฐ์„ ๊ฐ€์ ธ๊ฐ„ ๋ฐฉ์ฒญ๊ฐ์˜ ๋ฒˆํ˜ธ๋ฅผ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ๋‹ค.

๋‹จ, ๋‹ต์ด ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ์‚ฌ๋žŒ์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

๐Ÿ’ฌ ํ’€์ด

 

 

 

 

๐Ÿ‘ฉโ€๐Ÿ’ป ์ฝ”๋“œ

C++

#include <iostream>
#include <algorithm>
using namespace std;

int cake[1001]; // ์ผ€์ดํฌ ์กฐ๊ฐ ๋ณ„๋กœ ๋ฐฉ์ฒญ๊ฐ ๋ฒˆํ˜ธ
int cnt[1001]; // ๋ฐฉ์ฒญ๊ฐ ๋ฒˆํ˜ธ ๋ณ„๋กœ ์‹ค์ œ ๋ฐ›๊ฒŒ๋˜๋Š” ์ผ€์ดํฌ ์ˆ˜ 

int main(void) {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int L, N;
	cin >> L >> N;
	int st, en, _max=-1, _max_index=-1;
	for (int i = 1; i <= N; i++) {
		cin >> st >> en;
		for (int j = st; j <= en; j++) {
			if (cake[j] == 0) { // ์ผ€์ดํฌ ๋ฐฐ์—ด์ด ๋น„์–ด์žˆ๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐฑ์‹ 
				cake[j] = i;
			}
		}

		if (en-st+1 > _max) { // _max๋ฅผ ์ดˆ๊ณผ ์‹œ _max_index ๊ฐฑ์‹ 
			_max = en-st+1;
			_max_index = i;
		}
	}
	cout << _max_index << '\n';


	for (int i = 1; i <= L; i++) {
		if (cake[i] > 0) cnt[cake[i]]++; // ๋ฐฉ์ฒญ๊ฐ ๋ณ„๋กœ ์‹ค์ œ ๋ฐ›๊ฒŒ๋˜๋Š” ์ผ€์ดํฌ ์ˆ˜ ์นด์šดํŠธ
	}

	_max=-1, _max_index=-1;
	for (int i = 1; i <= N; i++) { // _max๋ฅผ ์ดˆ๊ณผ ์‹œ _max_index ๊ฐฑ์‹ 
		if (cnt[i] > _max) {
			_max = cnt[i];
			_max_index = i;
		}
	}
	cout << _max_index << '\n';

	return 0;
}