๋ฌธ์ ์ ๋ฆฌ
- ๋ ์ง๊ฐ 1์ผ ~ 365์ผ๋ก ํ์๋์ด ์๋ ๋ฌ๋ ฅ์ ๊ฐ์ง๊ณ ์์.
- ์ฌํด ์ผ์ ์ ๋ชจ๋ ๊ณํํด์ ๋ฌ๋ ฅ์ ํ์ํจ.
- ๋ ์จ๋ก ์ธํด ๋ฌ๋ ฅ์ ํ์ํ ์ผ์ ์ค ์ผ๋ถ๊ฐ ์ง์์ง๋ ค๊ณ ํจ.
- ๋ฐฉ์งํ๊ธฐ ์ํด ์ผ์ ์ด ์๋ ๊ณณ์๋ง ์ฝํ ์ง๋ฅผ ๋ฌ๋ ฅ์ ๋ถ์ด๋ ค๊ณ ํจ.
- ๋๋ฌด ๊ท์ฐฎ์ ํ์ ์๋์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ์ฝํ
์ง๋ฅผ ๋ถ์ด๋ ค๊ณ ํ๋ค.
- ์ฐ์๋ ์ผ์ ์ ๋ชจ๋ ๊ฐ์ ์ ์๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ ์ฝํ
์ง๋ฅผ ๋ง๋ค์ด ๋ถ์ธ๋ค.
- ์ฐ์๋ ๋ ์ผ์์ ๊ฐ ๊ฐ ์ผ์ ์ด 1๊ฐ ์ด์์๋ค๋ฉด, ์ฐ์๋ ์ผ์ ์ด๋ค.
- ์ฐ์๋ ๋ชจ๋ ์ผ์ ์ ํ๋์ ์ง์ฌ๊ฐํ์ ํฌํจ๋์ด์ผ ํ๋ค.
- ์ฐ์๋ ์ผ์ ์ ๋ชจ๋ ๊ฐ์ ์ ์๋ ๊ฐ์ฅ ์์ ์ง์ฌ๊ฐํ์ ์ฝํ
์ง๋ฅผ ๋ง๋ค์ด ๋ถ์ธ๋ค.
- ๋ฌ๋ ฅ์ ์๋์ ๊ฐ์ ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- ์ผ์ ์ ์์ ๋ ์ง์ ์ข ๋ฃ ๋ ์ง๋ฅผ ํฌํจํ๋ค.
- ์์์ผ์ด ๊ฐ์ฅ ์์ ์ผ์ ๋ถํฐ ์ฐจ๋ก๋๋ก ์ฑ์์ง๋ค.
- ์์์ผ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ผ์ ์ ๊ธฐ๊ฐ์ด ๊ธด ๊ฒ๋ถํฐ ์ฑ์์ง๋ค.
- ์ผ์ ์ ๊ฐ๋ฅํ ํ ์ต ์๋จ์ ๋ฐฐ์น๋๋ค.
- ์ผ์ ํ๋์ ์ธ๋ก์ ๊ธธ์ด๋ 1์ด๋ค.
- ํ๋ฃจ์ ํญ์ 1์ด๋ค.
์ ํ์ฌํญ
- ์ผ์ ์ ๊ฐ์ 1 <= N <= 1,000
- ์์ ๋ ์ง 1 <= S <= 365
- ์ข ๋ฃ ๋ ์ง 1 <= E <= 365
๋ฌธ์ ์ ํต์ฌ
- ํต์ฌ 1. ์ฐ์๋ ์ผ์ ์ ์์๋๋ก ์ฒ๋ฆฌํด์ผํ๋ค.
- ํต์ฌ 2. ์ฐ์๋ ์ผ์ ์ค ํ๋ฃจ์ ๊ฐ์ฅ ๋ง์ ์ผ์ ์ ์๋ฅผ ์ฐพ๋๋ค.
- ํต์ฌ 3. ์ฐ์๋ ์ผ์ ์ ๊ธธ์ด * ์ผ์ ์ค ๊ฐ์ฅ ๋ง์ ์ผ์ ์ ์๋ก ๋๋๋ ์ผ์ ๋ณ๋ก ์ฝํ
์ง ๋ฉด์ ์ ๊ตฌํ๋ค.
ํต์ฌ 1 - ๊ทธ๋ฆฌ๋ ํน์ฑ, ํต์ฌ 2 - ๊ตฌํ ํน์ฑ
๊ณ ๋ฏผํ ํฌ์ธํธ
- ์ด๋ ค์ด ํฌ์ธํธ. ํ๋ฃจ์ ๊ฐ์ฅ ๋ง์ ์ผ์ ์ ์๋ฅผ ์ด๋ป๊ฒ ๊ตฌํ ๊ฒ์ธ๊ฐ?
- ๋ชจ๋ ๋ ์ง(day=365) ๋ณ๋ก ๋ช๊ฐ์ ์ผ์ (N=1000)์ด ์๋์ง countํ๋ค.
- 1000 * 365 = 3,650,000 < 1s
import java.io.*;
import java.util.*;
public class Main {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static int[] count = new int[366];
static StringTokenizer st;
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(br.readLine());
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
int firstDay = Integer.parseInt(st.nextToken());
int lastDay = Integer.parseInt(st.nextToken());
// ์์ ์ผ์๋ถํฐ ์ข
๋ฃ์ผ์๊น์ง ์ผ์ ์ ์นด์ดํธ
for (int day = firstDay; day <= lastDay; day++) {
count[day]++;
}
}
int totalArea = 0;
int width = 0;
int height = 0;
// 1์ผ๋ถํฐ 365์ผ๊น์ง ์ค์บํ๋ฉฐ ์ฐ์๋ ์ผ์ ๊ทธ๋ฃน ์ฐพ๊ธฐ
for (int day = 1; day <= 365; day++) {
if (count[day] > 0) {
// ํ์ฌ ๋ ์ง์ ์ผ์ ์ด ์์ผ๋ฉด ํญ ์ฆ๊ฐ, ๋์ด ์
๋ฐ์ดํธ
width++;
height = Math.max(height, count[day]);
} else {
// ํ์ฌ ๋ ์ง์ ์ผ์ ์ด ์์ผ๋ฉด ์ด์ ๊ทธ๋ฃน์ ๋ฉด์ ๊ณ์ฐ ํ ์ด๊ธฐํ
totalArea += width * height;
width = 0;
height = 0;
}
}
totalArea += width * height;
System.out.println(totalArea);
}
}
๋ฌธ์ ์ถ์ฒ: https://www.acmicpc.net/problem/20207
'์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ 17406] ๋ฐฐ์ด ๋๋ฆฌ๊ธฐ 4 (0) | 2025.04.03 |
---|---|
[BOJ 1826] ์ฐ๋ฃ ์ฑ์ฐ๊ธฐ (0) | 2025.03.31 |
๋ฐฑ์ค - [BOJ 22856] ํธ๋ฆฌ ์ํ (0) | 2024.07.08 |
๋ฐฑ์ค - [BOJ 1865] ์ํ (0) | 2024.07.06 |
๋ฐฑ์ค - [BOJ 3085] ์ฌํ๊ฒ์ (0) | 2024.03.01 |