1. ํธ๋ฆฌ ์ง๋ฆ
ํธ๋ฆฌ์ ๋ ์ ์ u, v์ ๊ฑฐ๋ฆฌ์ ์ต๋๊ฐ
(1) O(n^3) : brute force
(2) O(n^2) : u๋ฅผ ๊ณ ์ ํ๊ณ bfsํ๋ค.
(3) O(n)
ํธ๋ฆฌ์์ ์์์ ์ ์ x๋ฅผ ์ ํํ๊ณ x์์ ๊ฐ์ฅ ๋จผ ์ ์ y๋ฅผ ์ฐพ๋๋ค.(bfs)
์ดํ y์์ ๊ฐ์ฅ ๋จผ ์ ์ z๋ฅผ ์ฐพ๋๋ค. ๊ทธ๋ฌ๋ฉด y์ z๊ฐ ๊ฐ์ฅ ๋ฉ๋ฆฌ ๋จ์ด์ ธ์๋ ์ ์ ์์ด๋ค.
์ฆ๋ช
์ํ๋ ๋ต์ด ๋ ์ ์ u์ v์ด๋ค.
๊ทธ๋ ๋ค๋ฉด 3๊ฐ์ง ๊ฐ๋ฅ์ฑ์ด ์๋๋ฐ, x์์ ๊ฐ์ฅ ๋จผ ์ ์ด y๋ผ๊ณ ํ๋ฉด
(1) x = u / x = v
(2) y = u / y = v
(3) x,y,u,v ๋ชจ๋ ๋ค๋ฅธ ๊ฒฝ์ฐ
(1)๊ณผ (2)๋ ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ต์ด ๋ง๋ค๋ ๊ฒ์ด ์๋ช ํ๋ค. (3)์ ๊ฒฝ์ฐ๋ u~y ๊ฒฝ๋ก์ u~v ๊ฒฝ๋ก๊ฐ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ์ด์ธ์๋ ์์ด์ผ ํ๋ค.
x,y,u,v๊ฐ ๋ชจ๋ ๋ค๋ฅด๋ค๊ณ ํ์. ๊ทธ๋ฌ๋ฉด x~y์ ๊ฒฝ๋ก์ u~v์ ๊ฒฝ๋ก๊ฐ ๊ต์ t๊ฐ ์์ ์๋ ์๊ณ , ์์ ์๋ ์๋ค.
๋ง์ฝ ๊ต์ t๊ฐ ์กด์ฌํ๋ค๋ฉด, t~y๊ฐ t~u, t~v๋ณด๋ค ๋ฉ์ด์ผ ํ๋ค. (x~y๊ฐ ๊ฐ์ฅ ๋ฉ์ด์ผ ํ๋ฏ๋ก)
๊ทธ๋ ๋ค๋ฉด, u~t~y๊ฐ u~t~v๋ณด๋ค ๋ฉ๋ค. ์ด๋ u~v๊ฐ ๋ต์ด๋ผ๋ ๊ฐ์ ์ ๋ชจ์์ด๋ค.
๊ต์ ์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด, ์ ์์ a~y๊ฐ a~b~u, a~b~v๋ณด๋ค ๋ฉ๋ค. (x~y๊ฐ ๊ฐ์ฅ ๋ฉ์ด์ผ ํ๋ฏ๋ก)
u~v์ u~y๋ฅผ ๋น๊ตํ๋ฉด, u~b๋ ๊ณตํต์ด๋ฏ๋ก b~a~y์ b~v๋ฅผ ๋น๊ตํ ๋ a~y๊ฐ a~b~v๋ณด๋ค ๋ฉ์ด์ผ ํ๋ฏ๋ก b~a~y๊ฐ b~v๋ณด๋ค ๋ฉ๊ณ ,
u~v๊ฑฐ๋ฆฌ๊ฐ u~y๋ณด๋ค ์งง์์ผ ํ๋ค. ์ด๋ u~v๊ฐ ๋ต์ด๋ผ๋ ๊ฐ์ ์ ๋ชจ์์ด๋ค.
2. ์ฐ์ต๋ฌธ์ : ์ ๋
์ต๊ต์๋ ์ ๋ฅ๊ฐ ํตํ๋ ์๋ก์ด ์์ฌ๋ฅผ ๊ฐ๋ฐํ๊ณ ์๋ค. ์ด ์์ฌ์ ๋จ๋ฉด์ M x N ๊ฒฉ์ ํํ์ธ๋ฐ, ๊ฒฉ์์ ์๋ฉด์ ์ธ๋ถ์ด๊ณ ๊ฒฉ์์ ์๋ซ๋ฉด์ ๋ด๋ถ๋ผ๊ณ ํ์. ๊ฒ์์ ์นธ์ ์ ๋ฅ๋ฅผ ์ ์ฐํ๊ณ , ํฐ์ ์นธ์ ์ ๋ฅ๊ฐ ํตํ๋ค. ์ธ๋ถ์์ ๋ด๋ถ๋ก ์๋ก ์ธ์ ํ ํฐ ์นธ์ ํตํด์ ์ ๋ฅ๊ฐ ํ๋ฅผ ์ ์๋ค. ๋๊ฐ์ ์ผ๋ก ์ธ์ ํ ํฐ ์นธ๋ผ๋ฆฌ๋ ์ ๋ฅ๊ฐ ํตํ์ง ์๋๋ค. ์ ๋ฅ๊ฐ ์ธ๋ถ์์ ๋ด๋ถ๋ก ํ๋ฅผ ์ ์๋์ง ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์ผ์ชฝ ๊ทธ๋ฆผ์ ์ ๋ฅ๊ฐ ํตํ๋ ๊ฒฝ์ฐ์ด๊ณ ์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ์ ์ ๋ฅ๊ฐ ํตํ์ง ์๋๋ค.
-> bfs / dfs ๋ก ํ์ด ๊ฐ๋ฅ
3. ๊ณผ๋ฐ์ ์ฐพ๊ธฐ
์ ์ ๋ฐฐ์ด A[n]์์ n/2๋ฒ ์ด์ ๋์ค๋ ์์ x๋ฅผ ์ฐพ๊ธฐ.
(1) O(n^2) : brute force๋ก ๊ฐ ์์๋ง๋ค ์๊ธฐ ๋ค์ ๋์ค๋ ํ์๋ฅผ ์ธ์ด๋ณธ๋ค.
(2) O(n log n)
- ๋ฐฐ์ด์ ์ ๋ ฌ ํ ์ฐจ๋ก๋๋ก ์์๋ฅผ ์ฝ์ผ๋ฉด์ ๋ฐ๋ก ์ง์ ์์์ ๊ฐ์์ง ๋น๊ตํ๋ค.
- ์ ๋ ฌ์ O(n log n), ์์๋ฅผ ์ฝ๋ ๋ฐ์ + O(n)
(3) O(n)
๊ทธ๋ฃน์ ๋งจ ์ฒ์ ์์์ ์ = ๋ค๋ฅธ ์์์ ์๊ฐ ๋๋๋ก ๊ทธ๋ฃน์ ๋๋๋ค.
๋ง์ฝ ๊ณผ๋ฐ์๋ก ๋์ค๋ ๊ฐ์ด ์๋ค๋ฉด ๊ฐ์ฅ ๋ง์ง๋ง ๊ทธ๋ฃน์ ๋งจ ์ ๊ฐ์ด๋ค.
์ฒซ๋ฒ์จฐ ์์๋ ๋น๊ต๋์ง ์๊ณ , ๋ค๋ฅธ ์์๋ค์ ์ต๋ n-1๋ฒ ๋ค๋ฅธ ์์์ ๋น๊ต๋๋ค.
๋ง์ง๋ง ๊ทธ๋ฃน์ ์ฒซ ์์๊ฐ ๊ณผ๋ฐ์์ธ์ง ์ ๊ฒํ๋๋ฐ์ n-1๋ฒ ๋น๊ต. ์ด O(n) ์๊ฐ.
- ์ฃผ์ฅ : n๊ฐ์ ์์ ์ค ๊ณผ๋ฐ์์ธ ์์๊ฐ x๋ผ๊ณ ํ๋ฉด, ์ ๋ฐฉ๋ฒ ์ดํ ๋งจ ์ผ์ชฝ ํ ๊ทธ๋ฃน์ ์ ๊ฑฐํ๋๋ผ๋ ๋จ์ ์์ ์ค ๊ณผ๋ฐ์์ธ ์์๋ x์ด๋ค.
- ์ฆ๋ช
์ฒซ๋ฒ์งธ ์์๋ x์ด๊ฑฐ๋ x๊ฐ ์๋๋ค.
๋ง์ฝ ์ฒซ๋ฒ์งธ ์์๊ฐ x๋ผ๋ฉด, x๊ฐ ๋์จ ํ์๋งํผ ๋ค๋ฅธ ์์๋ค์ด ์ฒซ ๊ทธ๋ฃน์ ํฌํจ๋๋ค.
๊ฐ์ ํ์๋งํผ x์ ๋ค๋ฅธ ์์๋ค์ด ์ ๊ฑฐ๋๋ฏ๋ก ๋จ์ ์์ ์ค ์ฌ์ ํ ๊ณผ๋ฐ์ ์ด์์ด x์ด๋ค.
์ฒซ๋ฒ์งธ ์์๊ฐ x๊ฐ ์๋๋ผ๋ฉด, ์ฒซ ์์๋ฅผ y๋ผ๊ณ ํ์.
x๊ฐ ๊ฐ์ฅ ๋ง์ด ์ ๊ฑฐ๋๋ ๊ฒฝ์ฐ๋ yyyyxxxx ๊ฐ์ ๊ฒฝ์ฐ์ธ๋ฐ,
์ด ๊ฒฝ์ฐ์๋ ์ฌ์ ํ ๊ฐ์ ํ์๋งํผ x์ ๋ค๋ฅธ ์์๋ค์ด ์ ๊ฑฐ๋๋ฏ๋ก ๋จ์ ์์ ์ค ๊ณผ๋ฐ์ ์ด์์ด x์ด๊ณ ๋ค๋ฅธ ๊ฒฝ์ฐ์๋ ๋ง์ฐฌ๊ฐ์ง๋ค.
(4) O(n)
๊ณผ๋ฐ์์ ์์๊ฐ m์ด๋ผ๊ณ ํ๊ณ , ๊ฐ ์์๋ง๋ค ์์ ์ด m์ด๋ฉด count += 1, ์๋๋ผ๋ฉด count -= 1์ ํด์ค๋ค.
๊ณผ๋ฐ์๊ฐ ์๋ค๋ฉด count ๊ฐ์ด ์์์ด๋ค.
'๐ ์ ๊ณต ๊ณต๋ถ > ๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 6. ์ธ๊ทธ๋จผํธ ํธ๋ฆฌ (0) | 2023.04.18 |
---|---|
[๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 5. ์์ฌ์์ด ๊ธฐ๋ฒ (0) | 2023.04.17 |
[๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 3. ์๋ฃ๊ตฌ์กฐ1 (0) | 2023.04.16 |
[๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 2. ๊ธฐ์ด์ํ (0) | 2023.04.16 |
[๋ฌธ์ ํด๊ฒฐ๊ธฐ๋ฒ] 1. C++ (0) | 2023.04.16 |