์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- ๊ทธ๋ํํ์
- ๋จธ์ง์ํธ
- ๋ฐฑ์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- ๋๋น์ฐ์ ํ์
- SQL
- BFS
- ๊ทธ๋ฆฌ๋
- ์์ํ์
- ์๊ณ ๋ฆฌ์ฆ
- ๋ค์ด๋๋ฏนํ๋ก๊ทธ๋๋ฐ
- ์ค๋ธ์
- ์ ๋ ฌ
- skala1๊ธฐ
- ํ์ด์ฌ
- DFS
- LIS
- ๋ณํฉ์ ๋ ฌ
- ๊ตฌํ
- db
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊ทธ๋ํ
- ๋์ ๊ณํ๋ฒ
- ์ํ
- skala
- DP
- ์ฐ์ ์์ํ
- ๊น์ด์ฐ์ ํ์
- ๋์ ํฉ
- Today
- Total
๐๐ญ๐ฐ๐ธ ๐ฃ๐ถ๐ต ๐ด๐ต๐ฆ๐ข๐ฅ๐บ
[๋ฐฑ์ค] 3020๋ฒ: ๊ฐ๋ฅ๋ฒ๋ - C++ ๋ณธ๋ฌธ
๋ฌธ์
๊ฐ๋ฅ๋ฒ๋ ํ ๋ง๋ฆฌ๊ฐ ์ฅ์ ๋ฌผ(์์๊ณผ ์ข ์ ์)๋ก ๊ฐ๋์ฐฌ ๋๊ตด์ ๋ค์ด๊ฐ๋ค. ๋๊ตด์ ๊ธธ์ด๋ N๋ฏธํฐ์ด๊ณ , ๋์ด๋ H๋ฏธํฐ์ด๋ค. (N์ ์ง์) ์ฒซ ๋ฒ์งธ ์ฅ์ ๋ฌผ์ ํญ์ ์์์ด๊ณ , ๊ทธ ๋ค์์๋ ์ข ์ ์๊ณผ ์์์ด ๋ฒ๊ฐ์๊ฐ๋ฉด์ ๋ฑ์ฅํ๋ค.
์๋ ๊ทธ๋ฆผ์ ๊ธธ์ด๊ฐ 14๋ฏธํฐ์ด๊ณ ๋์ด๊ฐ 5๋ฏธํฐ์ธ ๋๊ตด์ด๋ค. (์์ ๊ทธ๋ฆผ)

์ด ๊ฐ๋ฅ๋ฒ๋ ๋ ์ฅ์ ๋ฌผ์ ํผํ์ง ์๋๋ค. ์์ ์ด ์ง๋๊ฐ ๊ตฌ๊ฐ์ ์ ํ ๋ค์ ์ผ์ง์ ์ผ๋ก ์ง๋๊ฐ๋ฉด์ ๋ง๋๋ ๋ชจ๋ ์ฅ์ ๋ฌผ์ ํ๊ดดํ๋ค.
์์ ๊ทธ๋ฆผ์์ 4๋ฒ์งธ ๊ตฌ๊ฐ์ผ๋ก ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ๋ ์๊ฐ๋ค๋ฉด ํ๊ดดํด์ผํ๋ ์ฅ์ ๋ฌผ์ ์๋ ์ด ์ฌ๋๊ฐ์ด๋ค. (4๋ฒ์งธ ๊ตฌ๊ฐ์ ๊ธธ์ด๊ฐ 3์ธ ์์๊ณผ ๊ธธ์ด๊ฐ 4์ธ ์์์ ์ค๊ฐ์ง์ ์ ๋งํ๋ค)

ํ์ง๋ง, ์ฒซ ๋ฒ์งธ ๊ตฌ๊ฐ์ด๋ ๋ค์ฏ ๋ฒ์งธ ๊ตฌ๊ฐ์ผ๋ก ๋ ์๊ฐ๋ค๋ฉด ๊ฐ๋ฅ๋ฒ๋ ๋ ์ฅ์ ๋ฌผ ์ผ๊ณฑ๊ฐ๋ง ํ๊ดดํ๋ฉด ๋๋ค.
๋๊ตด์ ํฌ๊ธฐ์ ๋์ด, ๋ชจ๋ ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ง๋ค. ์ด๋, ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ํ๊ดดํด์ผํ๋ ์ฅ์ ๋ฌผ์ ์ต์๊ฐ๊ณผ ๊ทธ๋ฌํ ๊ตฌ๊ฐ์ด ์ด ๋ช ๊ฐ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N๊ณผ H๊ฐ ์ฃผ์ด์ง๋ค. N์ ํญ์ ์ง์์ด๋ค. (2 ≤ N ≤ 200,000, 2 ≤ H ≤ 500,000)
๋ค์ N๊ฐ ์ค์๋ ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ฅ์ ๋ฌผ์ ํฌ๊ธฐ๋ H๋ณด๋ค ์์ ์์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๊ฐ๋ฅ๋ฒ๋ ๊ฐ ํ๊ดดํด์ผ ํ๋ ์ฅ์ ๋ฌผ์ ์ต์๊ฐ๊ณผ ๊ทธ๋ฌํ ๊ตฌ๊ฐ์ ์๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ถ๋ ฅํ๋ค.
์ด๋ถํ์์ ์ด์ฉํ์ฌ๋ ํ ์ ์๋ค๋๋ฐ, ๊ทธ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ๊ณ ๋๋ ๋์ ํฉ์ ์ด์ฉํ์ฌ ํ์๋ค.
๋์ด๊ฐ n์ธ ๊ตฌ๊ฐ์์ ๋ถ๋ชํ๋ ์์/์ข ์ ์์ ์๋ ๋์ด๊ฐ (n + 1)์ธ ๊ตฌ๊ฐ์์ ๋ถ๋ชํ๋ ์์/์ข ์ ์์ ์ + ๊ธธ์ด๊ฐ n์ธ ์์/์ข ์ ์์ ์์ ๊ฐ๋ค. ์ด๋ฅผ ์ด์ฉํ์ฌ ํน์ ๊ตฌ๊ฐ์์ ๋ถ๋ชํ๋ ์ฅ์ ๋ฌผ์ ์๋ฅผ ๊ตฌํด์ค ๋ค ์ด๋ฅผ ํฉํ์ฌ ์ต์๊ฐ๊ณผ ๋น๊ตํด๋๊ฐ๋ฉด ๋๋ค.
์ฝ๋
#include <cstdio>
#include <climits>
int main(void) {
int N, H;
scanf("%d %d", &N, &H);
int *up = new int[H + 1];
int *down = new int[H + 1];
for(int i = 0; i <= H; i++) {
up[i] = down[i] = 0;
}
for(int i = 0; i < N; i++) {
int height;
scanf("%d", &height);
if(i % 2 == 0) down[height]++;
else up[height]++;
}
for(int i = H - 1; i >= 0; i--) {
up[i] += up[i + 1];
down[i] += down[i + 1];
}
int min = INT_MAX, count = 0;
for(int i = 1; i <= H; i++) {
int obstacle = down[i] + up[H - i + 1];
if(min > obstacle) {
min = obstacle;
count = 1;
}
else if(min == obstacle) count++;
}
printf("%d %d\n", min, count);
delete[] up;
delete[] down;
return 0;
}
'์ฝ๋ฉํ ์คํธ ์ค๋น > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 14501๋ฒ: ํด์ฌ - C++ (0) | 2022.02.15 |
---|---|
[๋ฐฑ์ค] 1932๋ฒ: ์ ์ ์ผ๊ฐํ - C++ (0) | 2022.02.10 |
[๋ฐฑ์ค] 2512๋ฒ: ์์ฐ - C++ (0) | 2022.02.03 |
[๋ฐฑ์ค] 5639๋ฒ: ์ด์ง ๊ฒ์ ํธ๋ฆฌ - C++ (0) | 2022.01.24 |
[๋ฐฑ์ค] 1507๋ฒ: ๊ถ๊ธํ ๋ฏผํธ - C++ (0) | 2022.01.21 |