https://www.acmicpc.net/problem/28250
๋ฌธ์ ์ด๋ฆ์ด ํน์ดํด์ ํ์ด๋ณธ ๋ฌธ์ . ์ค2๋ผ๊ณ ์์ก์๋ดค๋ค๊ฐ ๋์ฐํ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค.
์ค์ ์ฝํ ์๋ค๋ฉด ํ์์์ง ์ฅ๋ด ๋ชปํ๊ฒ ๋ค. ๊ผญ ์ ๋ ฅ๊ฐ ์ ํ์ ๋ณด๋ฉด์ ์๊ฐ์ ์ถ์ธกํ๋ ์ต๊ด์ ๋ค์ด์.
์ฌ๋ด์ด์ง๋ง ์ฝํ ํ๊ฒฝ์ ์์ํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฑด ๋์์ด ๋๋ ๊ฑฐ ๊ฐ๋ค.
์์ด๋์ด
1. ์ด์ค for๋ฌธ ์คํจ
- ์์์ ๋ณด๊ณ ๋ฌด์ํ๊ฒ ์ด์ค for์ผ๋ก ๊ตฌํํ๋ค๊ฐ ์๊ฐ์ด๊ณผํ๋ค.
2. ์ผ๋ฐํ
- mex๋ผ๋ ํจ์์ ํน์ง์ผ๋ก ์์ ๊ตฌํ ์ ์๋ค.
- ์ผ๋จ mex์ ๊ฐ์ 0, 1, 2๋ก ์ ํด์ ธ์๋ค.
- 0์ Ai, Aj๊ฐ ๋๋ค 0์ด ์๋๊ฒฝ์ฐ
- 2์ Ai, Aj์ ๊ฐ์ด ๊ฐ๊ฐ 0, 1์ธ ๊ฒฝ์ฐ
- 1์ ๋๋จธ์ง ๊ฒฝ์ฐ([0, 0] ์ผ๋, [0, 1๋ณด๋ค ํฐ์] ์ผ๋)
- ์์ ์กฐ๊ฑด์ ๊ฐ์ง๊ณ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ๋๋ค.
์ ์ฒด ์ฝ๋
N = int(input())
arr = list(map(int, input().split()))
arr_count_0 = arr.count(0)
arr_count_1 = arr.count(1)
#Sum = arr_count_0 * arr_count_1 * 2 + (N - arr_count_1 - arr_count_0) * arr_count_0 + (arr_count_0 * (arr_count_0 - 1) // 2)
Sum = arr_count_0 * (arr_count_1 * 2 + N - arr_count_1 - arr_count_0 + ((arr_count_0 - 1) / 2))
print(int(Sum))
*Sum๊ฐ์ ์ฃผ์์ ์๋ ์์ ์ค์ธ๊ฒ
์ฝ๋ ์ค๋ช
arr_count_0 = arr.count(0)
arr_count_1 = arr.count(1)
์ผ๋จ ์ํ๋ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด ๋ฐฐ์ด์์ 0์ ๊ฐ์์ 1์ ๊ฐ์๋ฅผ ๋ฏธ๋ฆฌ ๊ตฌํด์ค๋ค.
Sum = arr_count_0 * arr_count_1 * 2 + arr_count_0 * (N - arr_count_1 - arr_count_0) + (arr_count_0 * (arr_count_0 - 1) // 2)
์กฐํฉ์ด [0, 1]์ธ ๊ฒฝ์ฐ mex๊ฐ์ด 2 ์ด๋ฏ๋ก 'arr_count_0 * arr_count_1 * 2' ๋ก ์์ฑํ๋ค.
์กฐํฉ์ด [0, x(x > 1)]์ธ ๊ฒฝ์ฐ mex๊ฐ์ 1์ด๋ค. ๋ฐ๋ผ์ 'arr_count_0 * (N - arr_count_1 - arr_count_0)'๋ก ์์ฑํ๋ค.
์กฐํฉ์ด [0, 0]์ธ ๊ฒฝ์ฐ mex๊ฐ์ 1์ด๋ค. ๋ฐ๋ผ์ '(arr_count_0 * (arr_count_0 - 1) // 2)'๋ก ์์ฑํ๋ค.
mex๊ฐ์ด 0์ธ ๊ฒฝ์ฐ๋ ๋น์ฐํ ๋ฌด์ํด๋ ๋๋ค.
์ ์ถํ ๋๋ ์์์ ๊ณตํต์ธ์ arr_count_0๋ก ๋ฌถ์ด์ ์ ์ถํ๋ค.
'๐งฉ Problem Solving > [๋ฐฑ์ค]' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 28298 ๋ ํํ ํ์ผ ์์น ๋ฌธ์ (python ํ์ด์ฌ) (0) | 2023.07.04 |
---|---|
[๋ฐฑ์ค] 28250 ์ด๋ธ, ํ์์ผ ๊ทธ๋ฆฌ๊ณ ํธ๋ฅธ MEX์ ์๋ด (C++ cpp) (0) | 2023.07.03 |
[๋ฐฑ์ค] 28017 ๊ฒ์์ ํด๋ฆฌ์ดํ์ (python ํ์ด์ฌ) (0) | 2023.07.01 |
[๋ฐฑ์ค] 9205 ๋งฅ์ฃผ ๋ง์๋ฉด์ ๊ฑธ์ด๊ฐ๊ธฐ (python ํ์ด์ฌ) (0) | 2023.04.09 |
[๋ฐฑ์ค] 1759 ์ํธ๋ง๋ค๊ธฐ (python ํ์ด์ฌ) (0) | 2023.03.30 |