intro / implementation
๐ธ ๋๊ฒ ํผ์ ธ ์๋ ๊ฐ๋ค์ ๋ฌธ์ ํด๊ฒฐ์ ์ํด ์ขํ ์์ถ. (์ ๊ทธ๋ฆผ์ ๊ฒฝ์ฐ -6~5๊น์ง์ ํผ์ ธ ์๋ ์๋ค์ ์ฐจ๋ก๋๋ก 0 - 1 - 2 - 3 - 4๋ก ๋์ด ๊ฐ๋ฅ)
๐ธ ์ฃผ์์ : ์ฃผ์ด์ง ์๋ค์ ํฌ๊ธฐ๊ฐ ์ค์์น ์๊ณ , ํฌ๊ธฐ ์์๋ง์ด ๋ฌธ์ ํด๊ฒฐ์ ํ์ํ ๋ ์ขํ ์์ถ ์งํ
๐ธ ๊ตฌํ
ex) ๋๋ค ํฌ๊ธฐ ์์ผ๋ก ๋์ด๋ A[1], A[2], A[3], .... A[n]์ ์ขํ ์์ถ
โ A[1], A[2], ... , A[n]๋ฅผ ์ ๋ ฌํ ์๋ก์ด ๋ฐฐ์ด B[] ์์ฑ
โก ํ์ ์ ์ค๋ณต๋ ์์๋ค์ ์ ๊ฑฐ(์ค๋ณต ์นด์ดํธ ์ค์์น ์์ ๊ฒฝ์ฐ๋ง)
โข ๊ฐ A[i]๋ฅผ B[]์์ ์ด๋ถํ์ํ์ฌ B[]์์์ A[i] index๋ฅผ ๊ณ์ฐ
๐ธ ์ฝ๊ฒ ๋งํ์๋ฉด, ๋๋คํ๊ฒ ๋ฐฐ์น๋ ๋ค์ํ ํฌ๊ธฐ์ ์ซ์๋ค์ index์ ํฌ๊ธฐ๋ง์ผ๋ก ์ค๋ณต ์์ด ์์๋๋ก ๋ฐฐ์นํด ์์ถํจ๊ณผ๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ด ๋ hash map์ผ๋ก ๊ฐ ์ค์ number(key)์ ๋์ํ๋ index(value)๋ฅผ ๋ง๋ค ์ ์๋ค. (์ค๋ณต ์์ด ์์ถ์ด๋ฏ๋ก number์ ์ค๋ณต ์๋ key๋ก ์ ์ฅ)
๐ธ ์ขํ ์์ถ ์์ธ ๊ณผ์ (๊ทธ๋ฆผ)
โ ์ฃผ์ด์ง A ๋ฐฐ์ด
โก A๋ฐฐ์ด์ ์ ๋ ฌ (O(N)) ๋ฐ ์ค๋ณต ์ ๊ฑฐ(O(N))ํด์ B ๋ฐฐ์ด ์์ฑ
โ ์ค๋ณต ์ ๊ฑฐ๋ฒ์ ๋ด ์์์ ๋ด ์์ ์์์ ๋ค๋ฅด๋ค๋ฉด B ๋ฐฐ์ด์ ๋ฃ์ผ๋ฉด ๋จ / ๋๋ set() ์ฌ์ฉ
โข ์์ฑํ B ๋ฐฐ์ด์ ์ค๋ณต์์ด ์์ถํด key๋ฅผ number / value๋ฅผ index๋ก ์ ์ฅ(hash map ๊ตฌํ - O(N)) + ๋๋ binary search๋ฅผ ํ์ฉํด ๊ฐ number์ left index ๊ตฌํ๊ธฐ(O(NlogN))
๐ธ ์ด๋ ๊ฒ ์ขํ ์์ถ์ ํด์ฃผ์ด ์์ ๋ฒ์๋ฅผ ํ ์ค์ฌ์ค๋ค๋ฉด, ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฑ๋ฅ๋ฉด ํฅ์
๐ธ Fenwick Tree๋ Segment Tree ํ์ฉ ๊ฐ๋ฅ
๐ธ ์ขํ ์์ถ์ ์ฃผ์ด์ง ์๋ค์ ํฌ๊ธฐ ์์๋ง ์ค์ํ ๋ ์ ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก, ๊ทธ ์๋ค์ index๋ก ์ฌ์ฉํ ๋, ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ค์ผ ๋ ์ฌ์ฉ
'Computer Science > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฅญSelection Sort (0) | 2023.07.26 |
---|---|
์ค๊ตญ์ธ์ ๋๋จธ์ง ์ ๋ฆฌ(CRT;Chinese Remainder Theorem) (0) | 2023.02.26 |
๐ผ Regular Expression (0) | 2023.01.11 |
๐Dynamic Programming๐ (1) | 2023.01.03 |
bitmasking (0) | 2022.12.20 |
๋๊ธ