๐กํํ๋ง ์์ถ ์์ด๋์ด
- ํ์ผ์ ๋น๋ฒํ ๋ํ๋๋ ๋ฌธ์ -> ์งง์ ์ด์ง์ฝ๋ ํ ๋น
- ๋๋ฌผ๊ฒ ๋ํ๋๋ ๋ฌธ์ -> ๊ธด ์ด์ง์ฝ๋ ํ ๋น
๐ก์ ๋๋ถ ํน์ฑ (prefixx property)
- ํํ๋ง ์์ถ๋ฐฉ๋ฒ์ผ๋ก ๋ณํ์ํจ ๋ฌธ์ ์ฝ๋๋ค ์ฌ์ด์ ์กด์ฌ
- ๊ฐ๋ฌธ์์ ํ ๋น๋ ์ด์ง ์ฝ๋๋ ์ด๋ค ๋ค๋ฅธ ๋ฌธ์์ ํ ๋น๋ ์ด์ง์ฝ๋์ ์ ๋๋ถ๊ฐ ๋์ง ์๋๋ค๋ฅผ ์๋ฏธ
- ์ ๋๋ถ ํน์ฑ์ ์ฅ์ ์ ์ฝ๋์ ์ฝ๋ ์ฌ์ด๋ฅผ ๊ตฌ๋ถํ ํน๋ณํ ์ฝ๋๊ฐ ํ์ ์๋ค๋ ๊ฒ!
๐ก๊ทธ๋์, ํํ๋ง ์์ถ์ ๋ญ๊น?
- ์ ๋ ฅํ์ผ์ ๋ํด ๊ฐ๋ฌธ์์ ์ถํ ๋น๋์์ ๊ธฐ๋ฐ์ ๋ ์ด์งํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด์, ๊ฐ ๋ฌธ์์ ์ด์ง์ฝ๋๋ฅผ ํ ๋น
- ์ด๋ฌํ ์ด์ง์ฝ๋๋ฅผ ํํ๋ง ์ฝ๋๋ผ๊ณ ํ๋ค.
๐ก์์ฌ์ฝ๋
- ์ ๋ ฅ : ์ ๋ ฅ ํ์ผ์ n๊ฐ์ ๋ฌธ์์ ๋ํ ๊ฐ๊ฐ์ ๋น๋ ์
- ์ถ๋ ฅ : ํํ๋ง ํธ๋ฆฌ
1. ๊ฐ ๋ฌธ์๋น ๋
ธ๋๋ฅผ ๋ง๋ค๊ณ , ๊ทธ ๋ฌธ์์ ๋น๋์๋ฅผ ๋
ธ๋์ ์ ์ฅ
2. n๊ฐ์ ๋
ธ๋์ ๋น๋์์ ๋ํด ์ฐ์ ์์ ํ Q๋ฅผ ๋ง๋ ๋ค.
3. while(Q์ ์๋ ๋
ธ๋ ์ >=2){
4. ๋น๋์๊ฐ ๊ฐ์ฅ ์์ 2๊ฐ์ ๋
ธ๋ (A,B)๋ฅผ Q์์ ์ ๊ฑฐ
5. ์ ๋
ธ๋ N์ ๋ง๋ค๊ณ , A์ B๋ฅผ N์ ์์ ๋
ธ๋๋ก ๋ง๋ ๋ค.
6. N์ ๋น๋์ = A์ ๋น๋์ + B์ ๋น๋์
7. ๋
ธ๋ N์ Q์ ์ฝ์
ํ๋ค.
}
8. return //ํํ๋ง ํธ๋ฆฌ์ ๋ฃจํธ๋ฅผ ๋ฆฌํด
๐ก์์ ์ค์ต
- ํ ๋น๋ ์ฝ๋๋ค์ ๋ณด๋ฉด, ๊ฐ์ฅ ๋น๋์๊ฐ ๋์ 'A'๊ฐ ๊ฐ์ฅ ์งง์ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ , ๋ฐ๋ผ์ ๋ฃจํธ์ ์์์ด ๋์ด ์๊ณ , ๋น๋์๊ฐ ๋ฎ์ ๋ฌธ์๋ ๋ฃจํธ์์ ๋ฉ๋ฆฌ ๋จ์ด์ง๊ฒ๋์ด ๊ธด ์ฝ๋๋ฅผ ๊ฐ์ง๋ค.
- ์ ๋๋ถ ํน์ฑ์ ๊ฐ์ง๊ณ ์๋ค.
- ํ์ผ ์์ถ๋ฅ
- ์์ถ๋ ํ์ผ์ ํฌ๊ธฐ์ bit ์ : sum(๋ฌธ์์ ๋น๋์ x ๋นํธ ์) = 1,620
- ์์คํค ์ฝ๋๋ก ๋ ํ์ผ ํฌ๊ธฐ bit ์ : sum(๋ฌธ์์ ๋น๋์) x 8 = 7,440
- 21.8% -> ์ฝ 1/5 ํฌ๊ธฐ๋ก ์์ถ๋จ
โฐ์๊ฐ๋ณต์ก๋
- Line 1 : n๊ฐ์ ๋ ธ๋๋ฅผ ๋ง๋ค๊ณ , ๊ฐ ๋น๋์๋ฅผ ๋ ธ๋์ ์ ์ฅํ๋ฏ๋ก O(n)์๊ฐ
- Line2 : ์ฐ์ ์์ ํ ๋ง๋ค๊ธฐ -> ํ ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉ : O(n) ์๊ฐ
- Line3~7 : ์ต์ ๋น๋์๋ฅผ ๊ฐ์ง ๋
ธ๋ 2๊ฐ๋ฅผ Q์์ ์ ๊ฑฐํ๋ ํ์ ์ญ์ ์ฐ์ฐ๊ณผ ์ ๋
ธ๋๋ฅผ Q์ ์ฝ์
ํ๋ ์ฐ์ฐ์ ์ํ O(log n) (๊ฐ ์ธต์ ์๋งํผ!)
- while ๋ฃจํ๋ (n-1)๋ฒ ๋ฐ๋ณต : ๋ฃจํ๊ฐ 1๋ฒ ์ํ๋ ๋๋ง๋ค Q์์ 2๊ฐ์ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๊ณ 1๊ฐ๋ฅผ Q์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์
- (n-1)xO(logn) : O(nlogn)
- Line 8 : ํธ๋ฆฌ์ ๋ฃจํธ๋ฅผ ๋ฆฌํดํ๋ ๊ฒ์ด๋ฏ๋ก O(1) ์๊ฐ
- O(n) + O(n) + O(nlogn) + O(1) = O(nlogn)
โฐ์์ฉ
- ํฉ์ค, ๋์ฉ๋ ๋ฐ์ดํฐ ์ ์ฅ, ๋ฉํฐ๋ฏธ๋์ด, MP3 ์์ถ ๋ฑ์ ํ์ฉ
- ์ ๋ณด ์ด๋ก ๋ถ์ผ์์ ์ํธ๋กํผ๋ฅผ ๊ณ์ฐํ๋๋ฐ ํ์ฉ, ์ด๋ ์๋ฃ์ ๋ถํน์ ์ฑ์ ๋ถ์ํ๊ณ ์์ธกํ๋๋ฐ ์ด์ฉ๋จ.
Reference
์์ธ๊ณผํ๊ธฐ์ ๋ํ๊ต ์ปดํจํฐ๊ณตํ๊ณผ ์๊ณ ๋ฆฌ์ฆ ์์
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm] ๋ชจ๋ ์ ์ต๋จ ๊ฒฝ๋ก | Floyd-Warshall Algorithm (0) | 2021.10.20 |
---|---|
[Algorithm] ๋์ ๊ณํ ์๊ณ ๋ฆฌ์ฆ (0) | 2021.10.20 |
[Algorithm] ์์ ์ค์ผ์ค๋ง (0) | 2021.10.13 |
[Algorithm] ์งํฉ ์ปค๋ฒ ๋ฌธ์ (Set Covering Problem) (0) | 2021.10.13 |
[Algorithm] ๋ถ๋ถ ๋ฐฐ๋ญ ๋ฌธ์ (0) | 2021.10.13 |