โ
1. ํ ์ ๋ ฌ
(1) ํ ์ ๋ ฌ ์ด๋?
- ํ ์๋ฃ๊ตฌ์กฐ: ์ฐ์ ์์ ํ ์ถ์ ์๋ฃํ์ ๊ตฌํํ ์๋ฃ๊ตฌ์กฐ์ด๋ฉฐ, ์์ ์ด์ง ํธ๋ฆฌ์ด๋ค.
- ์ต๋ ํ: ๊ฐ ๋
ธ๋์ ๊ฐ์ ์์ ์ ์์ ๋
ธ๋์ ๊ฐ๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์์ผ ํจ.
- ์ต์ ํ: ๊ฐ ๋
ธ๋์ ๊ฐ์ ์์ ์ ์์ ๋
ธ๋์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์์ผ ํจ.
- ** ํ ์ ๋ ฌ: ์ด๋ฌํ ํ ์๋ฃ๊ตฌ์กฐ์ ์ฅ์ ์ ํ์ฉํ ์ ๋ ฌ ๋ฐฉ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋จ. **
- TIP: ํ ์ ๋ ฌ์์ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ํ ๋์๋ ์ต๋ ํ์ ํ์ฉํ๊ณ , ๋ด๋ฆผ์ฐจ์ ์ ๋ ฌ์ด๋ฉด ์ต์ ํ์ ํ์ฉ์ ํ๊ฒ ๋จ.
(2) ํ ์ ๋ ฌ - ๊ตฌํ
- ์ฅ์ : ํ์ ์์ ์ด์งํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ ์ธ๋ฑ์ค ์กฐ์์ผ๋ก ์์ ๋
ธ๋์ ๋ถ๋ชจ ๋
ธ๋๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์์.
- ์ด๋ฌํ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ํ์ ํธ๋ฆฌ ๊ตฌ์กฐ์์๋ ๋ถ๊ตฌํ๊ณ , ์ผ์ฐจ์ ๋ฐฐ์ด๋ก ๊ตฌํํ๋ ๊ฒ์ด ์ฌ์ค์ ํ์ค์ ๊ฐ๊น์.
(3) ํ ์ ๋ ฌ - ํ ์๋ฃ๊ตฌ์กฐ ์ฅ์ ( ์์์ ๊ฐ ์ฝ์
์ ๊ฐ๋จํจ )
- ์์ ์ด์ง ํธ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋๊ณ ์๊ธฐ ๋๋ฌธ์, 90 ์ด๋ผ๋ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ ๋ ๋ ๋ฐ๋์ ์ผ์ชฝ๋ถํฐ ์ฑ์์ ธ์ผ ํจ.
- ์ฆ, 40 ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ก์จ 90์ด ๋ค์ด๊ฐ์ผ ๋๋ค๋ ์๋ฏธ์.
- ๋ํ, ํ์ฌ ํ์ ์ต๋ ํ์ด๋ฏ๋ก ๊ฐ ๋
ธ๋์ ๊ฐ์ ์์๋
ธ๋์ ๊ฐ๋ณด๋ค ์ปค์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ถ๋ชจ ๋
ธ๋์ ๋น๊ต๋ฅผ ํ ๋ค 40๊ณผ 90์ ์์น๋ฅผ ๋ฐ๊พธ๊ณ , 90๊ณผ 60์ ์์น๋ฅผ ๋ฐ๊ฟ์ฃผ๊ณ , 90๊ณผ 80์ ์์น๋ฅผ ๋ฐ๊ฟ์ฃผ๊ฒ๋จ.
- ** ์ด๋ ๊ฒ ์์์ ๊ฐ์ด ์ฝ์
์ด ๋์์ ๋ ํ์ ์กฐ๊ฑด์ ๋ง์กฑํ ๋ ๊น์ง ๋ฐ๋ณตํ๋ฉด์ ํ์ ์ฌ๊ตฌ์ฑ์ ํ๊ฒ ๋จ. **
- ** ๊ฒฐ๋ก : ์ฝ์
์ด ๋งค์ฐ ๊ฐ๋จํ๋ค๋ ์ฅ์ ์ด ์์. **
(4) ํ ์ ๋ ฌ - ํ ์๋ฃ๊ตฌ์กฐ ์ฅ์ ( ์ต๋๊ฐ ์ญ์ ๊ฐ ์ฌ์ )
- ์ต๋๊ฐ ์ญ์ : 0๋ฒ์งธ ์ธ๋ฑ์ค์ ์๋ ์ต๋๊ฐ์ ์ญ์ (์ฆ, ์ต๋๊ฐ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ) ํ์ ๊ตฌํํ๋ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ๊ฐ์ ธ๋ค๊ฐ ๋ฃจํธ ๋
ธ๋(0๋ฒ์งธ ์ธ๋ฑ์ค)์ ๋ฃ๊ฒ ๋จ.
- ํ ์ฌ๊ตฌ์ฑ: ์ดํ, ํ์ ์ฌ๊ตฌ์ฑ ํด์ฃผ๋๋ฐ ๊ณผ์ ์ ๋ฃจํธ๊ฐ ๋ 10 ์์ ๋
ธ๋๋ 60๊ณผ 70์ด ์๋๋ฐ 60๊ณผ 70์ ๋น๊ต ํ ๋ค, ๋๊ฐ ์ค์ ๋ ํฐ 70๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๊ฒ ๋๋ค. ์ด์ ๋, 60์ด ๋ง์ฝ 10๊ณผ ๋ณ๊ฒฝ์ด ๋๋ค๋ฉด 70์ด ๋ ํฐ๋ฐ 60 ์๋์ ์๊ธฐ ๋๋ฌธ์ ํ์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ๋ชปํ๋ ์ํฉ์ด ๋ฐ์ ํ ์ ์๊ธฐ ๋๋ฌธ์.
- ๊ฒฐ๋ก : 10์ 70๊ณผ ์์น๋ฅผ ๊ตํํ๊ณ ์ดํ, 10์ 50๊ณผ ์์น๋ฅผ ๊ตํํ๋ฉฐ ํ ์ฌ๊ตฌ์ฑ์ด ์ข
๋ฃ๊ฐ ๋๊ฒ ๋จ.
(5) ํ ์ ๋ ฌ - ํ ์๋ฃ๊ตฌ์กฐ์ ์ฅ์ ์ ํ์ฉํ ์ ๋ ฌ ๋ฐฉ์
- ํ ๊ตฌ์กฐ์์ ๋ฃจํธ ๋
ธ๋๋ฅผ ๊ณ์ ๋ฝ์์ ์ ๋ ฌํ๋ ๋ฐฉ์์ผ๋ก ๋ณด๋ฉด ๋จ.
(5) ํ ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- 1๋จ๊ณ: 1์ฐจ์ ๋ฐฐ์ด์ ํ์ผ๋ก ๋ณํํ๋ ๊ณผ์
- 2๋จ๊ณ: ๋ฐ์ดํฐ์ ๊ฐ์๋งํผ ๋ฐ๋ณตํ๋ฉด์ ์ต๋๊ฐ์ ์ญ์ (root ๋
ธ๋ ๋ฝ๋ ์์
)ํ๊ณ ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ๋ฃจํธ์ ๋ฃ๊ณ , ํ์ ์ฌ๊ตฌ์ฑํ๋ ๊ณผ์ ์.
(6) ํ ์ ๋ ฌ - ์ฒ๋ฆฌ ๊ณผ์
- 1๋จ๊ณ: ์ ๋ ฌ์ด ์๋ ์
๋ ฅ 1์ฐจ์ ๋ฐฐ์ด์ ํ์ผ๋ก ๋ณํํ๋ ๋จ๊ณ
- 2๋จ๊ณ: ์ต๋๊ฐ์ ๋ฝ๊ณ ์ญ์ ๋ ์๋ฆฌ์ ๋ค๋ฅธ ์ต๋๊ฐ์ด ์ฌ๋ผ๊ฐ๋ ํ ์ฌ๊ตฌ์ฑ์ ํด์ฃผ๋ ๋จ๊ณ
- ์ฌ๊ธฐ์ ํต์ฌ์ ์
๋ ฅ ๋ฐฐ์ด์ ํ์ผ๋ก ๋ณํ์ ํ ๋ค ์ต๋๊ฐ์ ๋ฝ์์ ์ญ์ ๋ฅผ ํ๋ ๊ฒ์ด ์๋, ๊ฐ์ฅ ํฐ ๋ฃจํธ ๋
ธ๋์ ๊ฐ์ธ 60์ ๊ฐ์ฅ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์๋ ๊ฐ์ฅ ์์๊ฐ์ธ 10๊ณผ ์์น๋ฅผ ๊ตํํ๊ณ 60์ ์์น๋ฅผ ๊ณ ์ ์ํค๊ฒ ๋๋ค.
- ์ดํ, ๊ฐ์ฅ ์์ ๊ฐ์ธ 10์ด ๋ฃจํธ์ ์๋๋ฐ ์ด๊ฒ์ ํ ์ฌ๊ตฌ์ฑ์ ํ๊ฒ ๋๋ฉด, 10์ ๊ณ ์ ๋ ์ธ๋ฑ์ค๋ฅผ ์ ์ธํ ๋ง์ง๋ง ์ธ๋ฑ์ค์ธ 40์ ์ค๋ฅธ์ชฝ ์์ ๋
ธ๋๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ค. ( ์ฆ, ์ต๋๊ฐ๊ณผ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์ต์๊ฐ๊ณผ ์์น๋ฅผ ๋ฐ๊พธ๋ ๊ฒ์. )
- ** ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋ฉด ํ์ฌ ๋ฃจํธ์ ์๋ 50๋ 60 ์์น์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ ๊ณ์ํด์ ๋ฐ๋ณตํ๋ ์๋ฆฌ์. **
- ์ต๋๊ฐ๊ณผ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์์น๋ฅผ ๊ตํํ๋ฉด, ์ต๋๊ฐ์ ๊ณ ์ ์ด ๋ ์ํ๊ฐ ์ ์ง๊ฐ ๋๋ฉฐ, ์ด๊ฒ์ ๋ฐ๋ณตํ๋ฉด ์ ๋ ฌ์ด ๋จ.
(7) ํ ์ ๋ ฌ - ์ฒ๋ฆฌ ๊ณผ์ 1๋จ๊ณ (์ด๊ธฐ ํ ๊ตฌ์ถ)
- ์ด๊ธฐ ํ ๊ตฌ์ถ: 1์ฐจ์์ ์
๋ ฅ ๋ฐฐ์ด์ ํ์ผ๋ก ๋ณํํ๋ ๊ณผ์ ์ ์ด๊ธฐ ํ ๊ตฌ์ถ ๋จ๊ณ๋ผ๊ณ ํจ.
- ๋ฐฉ๋ฒ1: ์ฃผ์ด์ง ์
๋ ฅ ๋ฐฐ์ด์ ๊ฐ ์์๋ค์ ๋ชจ๋ ํ์ ์ฝ์
ํ๋ ๊ณผ์ ์ ๋ฐ๋ณต
- ํ ์๋ฃ๊ตฌ์กฐ์ ๊ฒฝ์ฐ ์์์ ๊ฐ์ ์ฝ์
ํ๋๋ฐ ์์ด์ ์ฝ๊ธฐ ๋๋ฌธ์ ์ด๋ฌํ ๋ฐฉ๋ฒ๋ ์กด์ฌํจ.
- ๋ฐฉ๋ฒ2: ์ฃผ์ด์ง ์
๋ ฅ ๋ฐฐ์ด์ ์์ ์ด์ง ํธ๋ฆฌ๋ก ๋ง๋ ํ, ๋
ธ๋๋ค์ ์์น๋ฅผ ์๋ก ๊ณ์ํด์ ๊ตํํด ๋๊ฐ๋ ๋ฐฉ๋ฒ์.
- ์
๋ ฅ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋ ์
๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ฅ ๋งจ ์ ์ธ๋ฑ์ค๋ฅผ ๋ฃจํธ๋ก ๋จผ์ ์ง์ ํ๊ฒ ๋๊ณ , ๋ค์ ์ธ๋ฑ์ค์ ์์์ ๋น๊ต๋ฅผ ํ ๋ค ๋ ํฌ๋ค๋ฉด ์์น๋ฅผ ๊ตํํ๊ณ , ๋ค์์ผ๋ก ์์ ๋
ธ๋๊ฐ ์กด์ฌํ๋ ์ํฉ์์ ์ธ๋ฑ์ค ๊ณ์ฐ์ ํตํด์ ํ๋์ ๋ฐฐ์ด ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋ ๊ฒ์ ๋ฐ๋ณตํ๋ ๊ณผ์ ์ ๊ฑฐ์นจ.
- ** ์ฆ, ์
๋ ฅ ๋ฐฐ์ด ์์์๋ง ๋ฐ์ดํฐ ๊ตํ์ด ์ด๋ค์ง ์ ์์. **
|
|
- (1) ์ ๋
ธ๋๋ถํฐ ์์ํด์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์งํํ๋ฉฐ ํ์ ์กฐ๊ฑด์ ๋ง์กฑํ ์ ์๋๋ก ๊ตํ์ ํด์ค.
- (2) ๋จผ์ ์์ ๋
ธ๋๊ฐ ์๋ ์ ๋
ธ๋๋ ํ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์ํ์ด๋ฏ๋ก, ๋์ด๊ฐ๊ฒ ๋จ.
- (3) ์์์ด ์๋ ๋
ธ๋์ธ 10์ ๋๋ฌํ๊ฒ ๋๋ฉด, ์์ ๋
ธ๋์ธ 40๊ณผ ๋น๊ต๋ฅผ ํ ๋ค ์์ ๋
ธ๋๊ฐ ๋ ํฌ๊ธฐ ๋๋ฌธ์ ์์น ๊ตํ์ด ์ผ์ด๋จ.
- (4) ์ดํ, 20 ๋
ธ๋์ ์์ ๋
ธ๋์ธ 40๊ณผ 80 ์ค ๋ ํฐ 80๊ณผ ์์น๋ฅผ ๊ตํํ๋ฉฐ, ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํด ์ต๋๊ฐ์ ๋ฃจํธ๋ก ์ฌ๋ฆผ.
- ** ํต์ฌ์ ํน์ ๋
ธ๋์ ์์ ๋
ธ๋์ ๋น๊ต ํ ๊ตํ์ด๊ธฐ ๋๋ฌธ์ ํน์ ๋
ธ๋๋ ๋ถ๋ชจ ๋
ธ๋์์ ๋น๊ต๋ ํ์ง ์์. **
- ** ๊ฒฐ๊ตญ์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ฌ๋ผ๊ฐ๋ ์ํฅ์ ํ์์ ์งํํ๋ฉฐ, ํน์ ๋
ธ๋์ ์์ ๋
ธ๋์ ๋น๊ต ๋ฐ ๊ตํ์ ์งํํ๊ธฐ ๋๋ฌธ์ ๊ตํ ๋ฐฉ์์ ํํฅ์์ผ๋ก ์งํ์ด ๋จ. **
(8) ํ ์ ๋ ฌ - ์ฒ๋ฆฌ ๊ณผ์ 2๋จ๊ณ (์ต๋๊ฐ ์ญ์ ๋ฐ ํ ์ฌ๊ตฌ์ฑ)
- (1) ์ต๋๊ฐ์ธ ๋ฃจํธ์ ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์์นํ ์์ ์ด์ง ํธ๋ฆฌ ์ตํ๋จ์ ์๋ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ตํํจ.
- ** ๊ตํ ๋ ๋ฐ์ดํฐ ์ค ์ต๋๊ฐ์ ์ญ์ ๋ ๋ฐ์ดํฐ๋ก ๊ฐ์ฃผํ๋ฉฐ, ๋ฐฐ์ด์ ๋ท ๋ถ๋ถ์ ๋ค์ด๊ฐ ์๋ ํํ์. **
- (2) ๋ฃจํธ ๋
ธ๋์ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๊ฐ์ธ 10์ด ๋ค์ด๊ฐ๊ณ , ํ ์ฌ๊ตฌ์ฑ์ ํตํด์ ๋ฃจํธ ์์ ๋
ธ๋ ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ธ 70๊ณผ ์์น๋ฅผ ๊ตํํ ๋ค ์ดํ์ 10์ ์์ ๋
ธ๋๊ฐ ๋ 30๊ณผ 50 ์ค ๋ ํฐ ๊ฐ์ธ 50๊ณผ ๋ ์์น๋ฅผ ๊ตํํ๊ฒ ๋จ.
- ์ ๋ ฌ ๊ฒฐ๊ณผ: ์์ ๊ฐ์ด ํ์ ์ฌ๊ตฌ์ฑ์ ํตํด์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋ ๋ชจ์ต์ด ๋จ.
(9) ํ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- ์ด๊ธฐ ํ ์์ฑ: ์ ๋
ธ๋๋ฅผ ์ ์ธํ ์์น๋ถํฐ ๋ฃจํธ๊น์ง ์ฌ๋ผ๊ฐ๋ฉฐ ๊ฐ ๋
ธ๋์ ์์๊ณผ ๋น๊ตํด ์๋๋ก ๋ด๋ฆฌ๋ sift-down ์ ์ํํ๋๋ฐ, ์ด ๊ณผ์ ์ ํธ๋ฆฌ์ ๋ด๋ ค๊ฐ ๊น์ด๊ฐ ๋งค์ฐ ์งง๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๊ฑฐ์ ๊ฑธ๋ฆฌ์ง ์์. ์ด๋ก ์ ์ผ๋ก๋ O(n) ์ ์ํ ์๊ฐ์ ๊ฐ์ง.
- ๋ฐ๊นฅ ๋ฃจํ(n): ๋ฃจํธ(์ต๋๊ฐ)๋ฅผ ๊บผ๋ด์ ๋ฐฐ์ด์ ๋งจ ๋ค๋ก ๋ณด๋ด๋ ์์
์ ๋ชจ๋ ์์๊ฐ ์ ๋ ฌ๋ ๋๊น์ง n๋ฒ ๋ฐ๋ณต
- ์์ชฝ ๋ฃจํ(log n): ๋ฃจํธ ์๋ฆฌ์ ์๋ก ์ฌ๋ผ์จ ์์๋ฅผ ์ ์๋ฆฌ๋ก ๋ณด๋ด๊ธฐ ์ํด ์๋๋ก ๋ด๋ฆฌ๋ sift-down์ ์ํํจ.
- ์ด๋, ํธ๋ฆฌ์ ๋์ด์ธ log n ๋งํผ ๋น๊ตํ๋ฉฐ ๋ด๋ ค๊ฐ๊ฒ ๋จ.
- ์ด๊ธฐ ํ ์์ฑ: O(n)
- ์ ๋ ฌ ๋ฐ๋ณต: n * log n = O(n log n)
- ์ต์ข
: O(n) + O(n log n) = O(n log n)
- ์์ ์ ์ด์ง ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋ฃจํธ์ ์๋ 20(์ต๋๊ฐ)์ ์ญ์ ํ๊ฒ ๋๋ฉด 10๊ณผ ์๋ฆฌ๋ฅด ๋ฐ๊พธ๊ฒ ๋๋๋ฐ, ์ด๋ ๋ฃจํธ์ ์๋ 10์ B(20) ๋ณด๋ค ์์ผ๋ฏ๋ก, ์์น๊ฐ ๋ฐ๋๊ฒ ๋๋ค. ์ด ๊ฒฝ์ฐ ๋์ผํ ๊ฐ์ ์์น๊ฐ ์ ๋ ฌ์ ์ ์๋์ ์ธ ์์๊ฐ ์ ๋ ฌ ํ์ ์ ์ง๊ฐ ๋์ง ๋ชปํ ๊ฒ์ ๋ณผ ์ ์์.
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์
๋ ฅ ๋ฐฐ์ด ์ธ์๋ ์ถ๊ฐ์ ์ผ๋ก ํ์ํ ์ ์ฅ๊ณต๊ฐ์ด ์์๊ฐ๋ฅผ ๋์ง ์์ผ๋ฏ๋ก, ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์.
โ
2. ๊ณ์ ์ ๋ ฌ
- ๋น๊ต ๊ธฐ๋ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์ง๊ธ๊น์ง ๋์จ ์ ๋ ฌ ๋ฐฉ์์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ์ ๋น๊ต๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์ด์์.
- ๋ํ, ๋น๊ต ๊ธฐ๋ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ์ ํํ์ด O(nlogn) ์ผ๋ก ์๋ฌด๋ฆฌ ๋นจ๋ผ๋ O(nlogn) ๋ณด๋ค ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํ ์ ์์์.
- ๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋ฐ์ดํฐ๊ฐ ๊ฐ์ง ๊ฐ์ ๋ถํฌ๋ ํน์ฑ์ ์ด์ฉํ ์ ๋ ฌ ๋ฐฉ์์ผ๋ก, ๋ฐ์ดํฐ๊ฐ ์ผ์ ํ ๋ฒ์ ๋ด์ ์กด์ฌํ๊ฑฐ๋, ์๋ฆฟ์ ๊ฐ์ ๊ณ ์ ํ ๊ท์น์ด ์์ ๋ ํด๋น ๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ์ผ๋ก ์ ๋ ฌ์ ํ ์ ์์.
- ** ์ฆ, ๋ฐ์ดํฐ์ ๋ถํฌ๊ฐ ๊ณ ์ ํ ๊ท์น์ด ์์๋์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ฏ๋ก, ์ ํ์ ์. **
- ์ ํ ์๊ฐ O(n): ๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ๊ฒฝ์ฐ์๋ ์ ํ ์๊ฐ O(n) ์ ์ฑ๋ฅ์ ๋ผ ์ ์๋ ๊ฒ์ด ํน์ง์.
(1) ๊ณ์ ์ ๋ ฌ ์ด๋?
- ๊ณ์ ์ ๋ ฌ: ๋ฐ์ดํฐ๊ฐ์ ๋น๊ต ๊ธฐ๋ฐ ์ ๋ ฌ์ด ์๋, ์
๋ ฅ ๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๊ฐ์ ๊ฐ๋ ๋ฐ์ดํฐ๊ฐ ๋ช๊ฐ์ธ์ง ๊ฐ์๋ฅผ ์์๋ด์ด ์ ๋ ฌํ๋ ๋ฐฉ์์ด๋ค.
์
๋ ฅ ๋ฐฐ์ด: [2, 2, 1, 1, 3, 1]
-> 1๋ณด๋ค ์์ ๊ฐ or ๊ฐ์ ๊ฐ ์ด ๊ฐ์ = 3๊ฐ
-> 2๋ณด๋ค ์์ ๊ฐ or ๊ฐ์ ๊ฐ ์ด ๊ฐ์ = 5๊ฐ
-> 3๋ณด๋ค ์์ ๊ฐ or ๊ฐ์ ๊ฐ ์ด ๊ฐ์ = 6๊ฐ
1์ ๋ง์ง๋ง ์ธ๋ฑ์ค = 3 index
2์ ๋ง์ง๋ง ์ธ๋ฑ์ค = 5 index
3์ ๋ง์ง๋ง ์ธ๋ฑ์ค = 6 index
- ** ์ด์ ๊ฐ์ด, ์
๋ ฅ ๋ฐฐ์ด์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด 1๋ณด๋ค ์์ ๊ฐ or ๊ฐ์ ๊ฐ ์ด ๊ฐ์๋ 3๊ฐ๋ฅผ ์ ์ ์๊ธฐ ๋๋ฌธ์ 1์ด ์ํด ์์ ์ ์๋ ๋ง์ง๋ง ์ธ๋ฑ์ค 3์ ์ป์ ์ ์๊ฒ ๋๋ฉฐ, ์ด์ฒ๋ผ ํด๋น ๊ฐ์ ๋ํ ์ธ๋ฑ์ค ๋ฒ์๋ฅผ ์ ์ ์๊ฒ ๋๋ฉฐ, ์ด๋ฅผ ํตํด์ ์ ๋ ฌ์ ํจ. **
- ๋ํ, ์์ธํ ๋ณด๋ฉด 1 ์ดํ 2๋ฅผ ๊ณ์ฐ ํ ๋ 1์ ํฌํจํ ๋์ ๊ฐ์ ํตํด์ index ์ ๋ง์ง๋ง ์์น๋ฅผ ์์๋ด๋ ์๋ฆฌ์.
(2) ๊ณ์ ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- A[1..n]: ์
๋ ฅ ๋ฐฐ์ด์ ์๋ฏธํ๋ฉฐ, n์ ์
๋ ฅ ํฌ๊ธฐ๋ฅผ ์๋ฏธํ๋ค.
- B[1..n]: ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋์ด์ ๋ด๊ธฐ๋ ๊ฒฐ๊ณผ ๋ฐฐ์ด์ ์๋ฏธํ๋ค.
- for (i=2; i<=n; i++): ์
๋ ฅ ๋ฐ์ดํฐ์ ์ต์๊ฐ๊ณผ ์ต๋๊ฐ์ ๊ณ์ฐํ์ฌ ์
๋ ฅ๊ฐ์ ๋ฒ์๋ฅผ MIN, MAX ๋ณ์์ ๋ด์์ฃผ๋ ์ฐ์ฐ์.
- ์ฆ, MIN ๊ณผ MAX ๋ณ์์๋ ์
๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ฅ ์์๊ฐ๊ณผ ๊ฐ์ฅ ํฐ๊ฐ์ ๋ด์์ฃผ๊ฒ ๋จ.
- for (j=MIN; j<=MAX; j++) COUNT[j] = 0: COUNT[ ] ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ค์ 0์ผ๋ก ์ด๊ธฐํํด์ฃผ๋ ๋ก์ง.
- for (i=1; i<=n; i++) COUNT[ A[i] ]++: ์
๋ ฅ ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต์ ๋๋ฆฌ๋ฉด์, A[i] ์
๋ ฅ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ์ค์ผ๋ก ์์๋ค์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผ์ ํ๋ฉฐ, COUNT[ ] ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์
๋ ฅ ๋ฐฐ์ด์ ์์์ ๊ฐ์ผ๋ก ์ ๊ทผ์ ํตํด COUNT[ ] ๋ฐฐ์ด์ ์์์ ๊ฐ์ 1์ฉ ๋๋ฆฌ๋ ๋ก์ง.
- ์ฝ๊ฒ ๋งํด, ์
๋ ฅ ๋ฐฐ์ด์ ๋์ผํ ๊ฐ์ด ์กด์ฌํ ๋ ๋ง๋ค COUNT[ ] ๋ฐฐ์ด์ ๋์ผํ ๊ฐ์ ์ธ๋ฑ์ค๋ก ์์๋ฅผ ๋๋ ค์ฃผ๋ ์ญํ ์.
- for (j=MIN+1; j <= MAX; j++): ์ถํํ์์ ๋์ ๊ฐ์ ๊ณ์ฐํด์ฃผ๋ ๋ก์ง์ด๋ฉฐ, ๊ฐ ์
๋ ฅ๊ฐ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋ฐ์ดํฐ ๊ฐ์๋ฅผ ๊ณ์ฐํด์ฃผ๋ ๋ก์ง์ด๋ฉฐ, ์ฝ๊ฒ ๋งํด COUNT[ ] ๋ฐฐ์ด์๋ ์
๋ ฅ ๋ฐฐ์ด์ ๋์ผํ ๊ฐ๋ค์ ๊ฐ์๋ค์ด ๋ค์ด๊ฐ ์๋ ์ํ์ด๋ฉฐ, ์ด๋ฌํ ๊ฐ ์ธ๋ฑ์ค์ ์์๋ค ๋ณด๋ค ์์ ๊ฐ๋ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฏ๋ก, ์์ ๋ณด๋ค ์์ ์ธ๋ฑ์ค๋ค์ ์์๋ค์ ๋์ ํฉ์ผ๋ก COUNT[ ] ๋ฐฐ์ด์ ์์๋ฅผ ๋ฐ๊พธ๋ ๋ก์ง์ผ๋ก ๋ณผ ์ ์์.
- for (i=n; i > 0; i--): ์
๋ ฅ ๋ฐฐ์ด A[ ] ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ ๋ฐฐ์ด B[ ] ์ ๋ด์์ฃผ๋ ๋ฐ๋ณต๋ฌธ์ด๋ฉฐ, ์
๋ ฅ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ COUNT ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ก ๋ฃ์ผ๋ฉด ์นด์ดํธ ๋ฐฐ์ด์ ์๋ ๊ฐ์๋ฅผ ํ๋ ์ง์์ฃผ๋ฉฐ, ๊ฒฐ๊ณผ ์ ๋ ฌ ๋ฐฐ์ด B[ ] ์ ๋ด์์ฃผ๊ฒ ๋๋ค.
- ์ต์ข
: ์ ๋ ฌ ๋ฐฐ์ด B[ ] ์ ์ ๋ ฌ๋ ์ํ๋ก ๊ฒฐ๊ณผ๊ฐ ๋์ค๊ฒ ๋จ.
|
|
- A[ ]: ์
๋ ฅ ๋ฐฐ์ด์ ๋ํ๋ธ๋ค.
- COUNT[ ]: ์
๋ ฅ ๋ฐฐ์ด์ ์กด์ฌํ๋ ๊ฐ๋ค ๊ฐ๊ฐ์ ์๊ฑฐ๋ ๊ฐ์ ๊ฐ๋ค์ ๊ฐ์๋ฅผ ์นด์ดํธ ํ๊ธฐ ์ํ ๋ฐฐ์ด์ด๋ค.
- ํต์ฌ: COUNT[ ] ๋ฐฐ์ด์ ์
๋ ฅ ๋ฐฐ์ด์ ์ซ์๋ค์ ๋ฒ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ ํด์ง๊ฒ ๋๋ฉฐ, ์
๋ ฅ ๋ฐฐ์ด์ ์ซ์์ ์นด์ดํธ ๋ฐฐ์ด์ ์ธ๋ฑ์ค์ ๊ฐ์ ๋์ผํ๊ฒ ๊ตฌ์ฑ์ด ๋๊ณ , ์นด์ดํธ ๋ฐฐ์ด์ ์์๋ก๋ ์
๋ ฅ ๋ฐฐ์ด์ ์๊ฑฐ๋ ๋์ผํ ๊ฐ์ ๋์ ํฉ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค.
- ์๋ฅผ๋ค๋ฉด, [2, 2, 1, 1, 100] 5๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ํ๋ฉด, 100๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด์ด ๋ง๋ค์ด์ง๊ฒ ๋๋ฉฐ, COUNT[1] ์๋ 1์ด 2๊ฐ ์ด๊ธฐ ๋๋ฌธ์ ์์์๋ 2๋ผ๋ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ , COUNT[2] ์๋ 2๋ผ๋ ์ซ์๊ฐ 2๊ฐ ๊ทธ๋ฆฌ๊ณ COUNT[1] ์ ์์ ๊ฐ์ ๋ํ ๋์ ํฉ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ ์๋ฆฌ์ด๋ค.
- ๊ฒฐ๋ก : ๊ฐ ์นด์ดํธ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ ์
๋ ฅ ๋ฐฐ์ด์ ์์๋ค์ ์ซ์ ๋ฒ์๊ฐ ๋๋ฉฐ, ํด๋น ์ธ๋ฑ์ค ๋ด๋ถ์ ์์๋ ์ซ์์ ๊ฐ์๊ฐ ๋๋ค.
- ** ๋ํ, ์ค์ ์ ๋ ฌ ๊ณผ์ ์์๋ ์
๋ ฅ ๋ฐฐ์ด์ ๋ง์ง๋ง ์ธ๋ฑ์ค ๊ฐ์ ํ์ธ ํ ๋ค, ์นด์ดํธ ๋ฐฐ์ด์ ์์๊ฐ์ ํ์ธ ํ๊ฒ ๋๋ฉด, ๋์ ํฉ์ธ ๋ง์ง๋ง ์ธ๋ฑ์ค์ ๊ฐ์ ํด๋น ์
๋ ฅ ๋ฐฐ์ด์ ๊ฐ์ ์ ๋ ฌ ํ ๋ฐฐ์ด์ ๋ฃ์ด๋๊ณ , ์นด์ดํธ ๋ฐฐ์ด์ ์์๊ฐ์ -1 ์ ํด์ฃผ๊ฒ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ง์ง๋ง ์ธ๋ฑ์ค์์ -1 ์ด ๋ ์ธ๋ฑ์ค์ ๋ฃ์ด์ง๋ ์๋ฆฌ์ด๋ค. **
- ** ์ค์ ๋์ ์๋ฆฌ๋, ์์ ๊ฐ์ด ์
๋ ฅ ๋ฐฐ์ด A[ ] ๊ฐ ์ฃผ์ด์ก์ ๋, ๋ง์ง๋ง ์ธ๋ฑ์ค์ ์์์ธ 5๋ฅผ COUNT[ ] index 5๋ฅผ ํตํด์ ๋์ ํฉ์ ๊ฐ์๋ฅผ ํ์ธํ๊ฒ ๋๋ค. ์ด๋, ์๊ฑฐ๋ ๋์ผํ ๊ฐ์ด 4๋ผ๋ ๊ฐ์ ์ป๊ฒ ๋๊ณ , ์ ๋ ฌ ๋ ์๋ก์ด ๋ฐฐ์ด์ธ B[ ] 4๋ฒ์งธ ์ธ๋ฑ์ค์ 5์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๊ณ , ์ซ์๊ฐ ํ๋ ์ฌ๋ผ์ก์ผ๋ฏ๋ก, COUNT[ ] ์ 5์ ๊ฐ์๋ฅผ 4 -> 3์ผ๋ก -1์ ํด์ฃผ๊ฒ ๋๋ค. **
- ๊ฒฐ๋ก ์ ์์ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๊ฒ ๋๋ฉด, ์ด์ ๊ฐ์ด ์ ๋ ฌ์ด ์์ ๋ ์ ์์.
(3) ๊ณ์ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- O(n): ์
๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋ฉฐ, ์
๋ ฅ ๋ฐฐ์ด์ ์ซ์๋ค์ ๋ฒ์๋ฅผ ์ฐพ๊ธฐ ์ํด ํ๋์ฉ ๋น๊ต๋ฅผ ํ๊ฒ ๋๋ฉฐ, ์ถ๊ฐ์ ์ผ๋ก ์
๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต์ ํ๋ฉฐ, COUNT ๋ฐฐ์ด์ ์
๋ ฅ ๋ฐฐ์ด์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํจ. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก ์
๋ ฅ ๋ฐ์ดํฐ์ n์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํด COUNT ๋ฐฐ์ด์ ํ์๋ฅผ ๋ด๋ฆฌ๋ฉฐ B ๋ฐฐ์ด์ ์ ๋ ฌํจ.
- ** ์ฆ, ํ๋์ ๋ถ๋ถ์ ์
๋ ฅ ๋ฐ์ดํฐ n์ ํฌ๊ธฐ์ ๋น๋กํ ์ฐ์ฐ์ ๊ธฐ์ค์ผ๋ก ์ ํด์ง ์๊ฐ๋ณต์ก๋๋ O(n) ์ด ๋ ์ ์์. **
- O(k): k = MAX-MIN+1 ์ ๊ฐ์ผ๋ก ๋ฐฐ์ด ๋ด๋ถ์ ๊ฐ์ฅ ํฐ ๊ฐ๊ณผ ๊ฐ์ฅ ์์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก COUNT ๋ฐฐ์ด์ด ๋ง๋ค์ด์ง๊ณ , ๊ทธ๋งํผ ๋ฐ๋ณต๋ฌธ์ ํ๋ ์ฐ์ฐ์ ์๋ฏธํ๋ค. ( ๋นจ๊ฐ์ ๋ถ๋ถ )
- ** ๋ ๊ฐ์ O(n+k) ์ฐ์ฐ์ ๋ํ๊ฒ ๋๋ฉด, ๊ฒฐ๋ก ์ O(n) ์ ์ฑ๋ฅ์ ๊ฐ์ง๊ฒ ๋จ. **
- ์
๋ ฅ๋ฐ์ดํฐ์ ๋ฒ์๋ k์ด๋ฉฐ, ํด๋น k๊ฐ n๊ฐ ๋น์ทํ๊ฑฐ๋, ๋ ์์์ผ ์ ํ ์๊ฐ O(n) ์ด ๋ ์ ์๋ค๋ ์๋ฏธ์ด๋ค.
- ** ์ฆ, [2, 2, 1, 100] ์ด๋ฐ์์ผ๋ก ์๊ฒ ๋๋ฉด, n์ 4์ธ๋ฐ k๋ 1~100๊น์ง์ ๋ฒ์๋ฅผ ๊ฐ์ง๊ฒ ๋์ด COUNT ๋ฐฐ์ด์ 100๊ฐ์ ์์๋ฅผ ๋ด๋ ๋ฐฐ์ด์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์, ์
๋ ฅ ๋ฐ์ดํฐ์ ๋ฒ์์ธ k๋ n๋ณด๋ค ์๊ฑฐ๋ ๋น์ทํด์ผ O(n)์ ๋ณด์ฅ ํ ์ ์๋ค๋ ์๋ฏธ. **
- ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์๋ณธ ๋ฐฐ์ด์ ๋ค์ชฝ์ ์๋ ๋ฐ์ดํฐ๊ฐ COUNT ๋ฐฐ์ด์ ๋์ ํฉ ๊ฐ์์ ์ํด์ ๋ง์ง๋ง ์ธ๋ฑ์ค๋ฅผ ์๊ณ ๊ฒฐ๊ณผ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฒ ๋๊ณ , ๋์ ํฉ -1 ์ํ๊ฒ ๋๊ณ ์ดํ์ ๋์ผํ ๊ฐ์ด ๋์จ๋ค๊ณ ํ๋ฉด -1์ด ๋ ์ธ๋ฑ์ค์ด๊ธฐ ๋๋ฌธ์ ๋์ผํ ๊ฐ์ ๋ํ ์๋์ ์ธ ์์น๊ฐ ๋ณํ์ง ์๊ฒ ๋จ.
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋: ์
๋ ฅ ๋ฐฐ์ด์ ์ ์ธํด๋ ์นด์ดํธ ๋ฐฐ์ด, ๊ฒฐ๊ณผ ๋ฐฐ์ด ๋ ๊ฐ์ ๋ฐฐ์ด์ ์ถ๊ฐ์ ์ผ๋ก ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋.
- ๋ณดํธ์ ์ด์ง ๋ชปํ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ์
๋ ฅ๊ฐ์ ๋ฒ์๋ฅผ ๋ฏธ๋ฆฌ ์์์ผํ๊ณ , ์ถ๊ฐ์ ์ธ ๋ฐฐ์ด์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๊ธฐ๋ ์ด๋ ต๋ค๊ณ ๋ณด๋ฉด ๋จ.
โ
3. ๊ธฐ์ ์ ๋ ฌ
(1) ๊ธฐ์ ์ ๋ ฌ ์ด๋?
- ๊ธฐ์ ์ ๋ ฌ: ์
๋ ฅ ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ค์ ์๋ฆฟ์๋ณ๋ก ๋๋๊ณ ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ ์ ๋ ฌ ๋ฐฉ์์.
- LSD ๊ธฐ์ ์ ๋ ฌ: ๋ฎ์ ์๋ฆฟ์๋ถํฐ ๋์ ์๋ฆฟ์๋ก ์ ๋ ฌ์ ์งํํ๋ ๋ฐฉ์
- MSD ๊ธฐ์ ์ ๋ ฌ: ๋์ ์๋ฆฟ์๋ถํฐ ๋ฎ์ ์๋ฆฟ์๋ก ์ ๋ ฌ์ ์งํํ๋ ๋ฐฉ์
- TIP: ๊ณ์ ์ ๋ ฌ์ ๋ฒ์(k)๊ฐ ํฌ๋ฉด ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ปค์ง๋ค๋ ๋จ์ ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ณผ ์ ์์.
(2) ๊ธฐ์ ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- LSD ๊ธฐ์ ์ ๋ ฌ(๊ฐ์ฅ ๋ฎ์ ์๋ฆฟ์๋ถํฐ ์ ๋ ฌ)๋ฐฉ์์ ์ด์ฉํ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
- for (i=1; i<=d; i++): d๋ ์ซ์์ ์ต๋ ์๋ฆฟ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ฝ๊ฒ ๋งํด ๋ฐ์ดํฐ๊ฐ ์ต๋ 100์ ์๋ฆฌ๊น์ง ์๋ค๋ฉด d = 3์ด ๋์ด ๋ฃจํ๋ฅผ 3๋ฒ ๋๊ฒ๋๋ค๋ ์๋ฏธ์ด๋ค.
- 0~d ๋งํผ ๋ฃจํ๋ฅผ ๋๋ฉฐ, ๊ฐ๊ฐ d์ ์๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๋จ.
- ** ๋ด๋ถ์ ์ผ๋ก ๊ณ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๊ณ ์์. **
(3) ๊ธฐ์ ์ ๋ ฌ - LSD ๊ธฐ์ ์ ๋ ฌ
- (1) ์์ ์์๋ 1์ ์๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ ๋จผ์ ์ํํ๋ LSD ๊ธฐ์ ์ ๋ ฌ ๋ฐฉ์์ผ๋ก ์งํ์ด ๋๋ฉฐ, ์ผ์ ์๋ฆฌ๋ฅผ ํ์ธํ ๋ค 0,1,2,3...9 ๊น์ง์ ์์ผ๋ก ์ ๋ ฌ์ ํ๊ฒ ๋๋ค.
- ์ด๋, ๊ฐ ๋ฐ์ดํฐ์ i์๋ฆฟ์์ ๊ฐ์ ๋ํด์ ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๊ธฐ ๋๋ฌธ์, ์ ๋ ฌ์ ํ์ ์๋์ ์ธ ์์น๊ฐ ์ ์ง๊ฐ ๋จ์ ์ ์ ์์. ( 265, 095, 185 ์์๊ฐ ์ ์ง๋จ์ ์ ์ ์์. )
- (2) ๋ค์์ผ๋ก 10์ ์๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๋จ.
- (3) ๋ง์ง๋ง์ผ๋ก 100์ ์๋ฆฌ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌ์ด ๋๋ฉด, ๋ชจ๋ ์ ๋ ฌ์ด ์ ๋ ๊ฒ์ ์ ์ ์์.
(4) ๊ธฐ์ ์ ๋ ฌ - MSD ๊ธฐ์ ์ ๋ ฌ
- LDS ๊ธฐ์ ์ ๋ ฌ๊ณผ ๋ฐ๋๋ก ๊ฐ์ฅ ํฐ ์๋ฆฌ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋จผ์ ์ ๋ ฌ์ด ๋๋ ๋ฐฉ์์ด๋ค.
(5) ๊ธฐ์ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- ์๋ฆฟ์ d ๋งํผ ๋ฐ๋ณต๋ฌธ์ ๋๊ธฐ ๋๋ฌธ์ ์
๋ ฅ ๋ฐ์ดํฐ n๊ณผ d๋ฅผ ๊ณฑํ ๊ฐ์ด ์ฐ์ฐ์ ํ์๋ก ๋ณผ ์ ์์ง๋ง, d๋ ์์์ด๋ฏ๋ก, O(n)์.
- ๊ธฐ์ ์ ๋ ฌ์ ๊ฒฝ์ฐ ์
๋ ฅ ๋ฐ์ดํฐ d๊ฐ ์์ ์ด๋ฏ๋ก, O(n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋จ.
- ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋์ผํ ์ซ์์ ์๋์ ์ธ ์์น๊ฐ ์ ์ง๊ฐ ๋จ.
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋: ๊ณ์ ์ ๋ ฌ์ ๋ด๋ถ์ ์ผ๋ก ํ์ฉํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ฐ์ดํฐ ๊ฐ์์ ์ง๋ฒ ํฌ๊ธฐ๋งํผ์ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํ๊ฒ ๋จ.
โ
4. ๋ฒํท ์ ๋ ฌ
(1) ๋ฒํท ์ ๋ ฌ ์ด๋?
(2) ๋ฒํท ์ ๋ ฌ - ์๊ณ ๋ฆฌ์ฆ
- (1) ์ฌ๋ฌ ๊ฐ์ ๋ฒํท ๋ง๋ค๊ธฐ: ์
๋ ฅ๊ฐ์ ๋ฒ์๋ฅผ ๊ตฌํ ๋ค, ํด๋น ๋ฒ์์์ ๊ฐ์ฅ ํฐ ๊ฐ(MAX), ๊ฐ์ฅ ์์ ๊ฐ(MIN)์ ๋บ ๋ค 1์ ๋ํ๊ณ ์
๋ ฅ๋ฐ์ดํฐ(n)์ ๋๋๊ฒ ๋๋ฉด ๊ตฌ๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ ์ ์์ผ๋ฉฐ, n ๋งํผ์ ๋ฒํท(๋ฐฐ์ด) ์ ๊ฐ ์ธ๋ฑ์ค๋ ํด๋น ๊ตฌ๊ฐ์ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๊ณ ์์.
- (2) ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํด๋น ๋ฒํท์ ๋ฃ๊ธฐ: ๊ฐ ๊ตฌ๊ฐ๋ง๋ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ฅผ ๊ฐ์ง๋ ๋ฒํท ๋ฐฐ์ด์ ์
๋ ฅ ๋ฐ์ดํฐ์ ๊ฐ์ ๋ฃ๊ฒ ๋๋ฉด, ๊ตฌ๊ฐ์ ๋ง๊ฒ ๋ฐ์ดํฐ๊ฐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ํํ๋ก ๋ค์ด๊ฐ๊ฒ ๋๋ ์๋ฆฌ์.
- (3) ๊ฐ ๋ฒํท์ ์ฝ์
์ ๋ ฌํ๊ธฐ: ์์ 65๊ฐ ๋ค๋ก ๊ฐ๊ณ 61์ด ์์ผ๋ก ๊ฐ๋ฏ ๊ฐ ๋ฒํท์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ฝ์
์ ๋ ฌ์ ํ๊ฒ ๋จ.
- (4) ๋ฒํท ์์๋๋ก ๊ฐ ๋ฐ์ดํฐ ๋์ดํ๊ธฐ: ๋ฒํท ๋ฐฐ์ด์ ์ธ๋ฑ์ค 0๋ฒ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ์ ์ผ ์ฒซ ๋ฒ์งธ ์์๋ถํฐ ์์๋๋ก ์ ๋ ฌ์ ํ๊ฒ ๋๋ฉด ์ ๋ ฌ ๊ฒฐ๊ณผ๊ฐ B[ ] ๋ฐฐ์ด์ฒ๋ผ ๋ด๊ธฐ๊ฒ ๋๋ค.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ฒํท ์ ๋ ฌ์ ์ด๋ฌํ ๊ณผ์ ์ ํตํด์ ์ ๋ ฌ์ด ๋จ.
(3) ๋ฒํท ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
- ์ฝ์
์ ๋ ฌ์ ์ํด BUCKET[i]๋ฅผ ์ ๋ ฌ: ๋ฐ์ดํฐ ๊ฐ์ n๋งํผ ๋ฐ๋ณตํ๋๋ฐ, ๊ฐ ๋ฒํท ๋ณ๋ก ์ฝ์
์ ๋ ฌ์ ํ๋๊ฑด ์์ ์๊ฐ O(1) ๋งํผ๋ง ๊ฑธ๋ฆฌ๋ฉฐ, ๋ชจ๋ ๋ฒํท์ n๋งํผ ๋ฐ๋ณตํ๋ฉฐ ์ ๋ ฌํ๊ธฐ ๋๋ฌธ์ ํด๋น ๋ฐ๋ณต ๊ตฌ๊ฐ์๋ O(n) ์ด ๊ฑธ๋ฆผ.
- ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ณด๋ฉด, ๋ชจ๋ ๋ฐ์ดํฐ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณต ๋๋ ๋ฒํท์ ์์ ์๊ฐ๋งํผ ๋ฐ๋ณตํ๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(n) ์ด๋ค.
- ** ์ฝ์
์ ๋ ฌ ๊ณผ์ ์์ ํ๋์ ๋ฒํท์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ ์๋ ๊ฒฝ์ฐ ์ฝ์
์ ๋ ฌ ์ต์
์ ์ํ ์๊ฐ์ธ O(n^2) ์ด ๋์ฌ ์ ์๋ค๋ ๋จ์ ์ด ์กด์ฌํจ. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ฒํท ์ ๋ ฌ์ ์
๋ ฅ ๋ฐ์ดํฐ์ ๊ฐ์ด ํ๋ฅ ์ ์ผ๋ก ๊ท ๋ฑํ๊ฒ ๋ถํฌํ ๋ ์ ์ฉํ ๋ฐฉ์์. **
- ๋ฒํท์ ๊ฐ์๊ฐ ์
๋ ฅ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋น๋กํด์ผ ์ ์ฉ: ์
๋ ฅ ๋ฐ์ดํฐ์ ๊ฐ์์ ๋ฒํท์ ๊ฐ์๊ฐ ๋น๋กํ ๋๋ ๊ฒฐ๊ตญ ๊ฐ ๋ฒํท์๋ ์์ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ฒํท์ ์ฝ์
์ ๋ ฌ ํ์ ๋, ์์ ์๊ฐ์ ์ ๋ ฌ์ด ๊ฐ๋ฅํด์ง๋ฉฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ์ ํ ์๊ฐ์ ๋์์ด ๊ฐ๋ฅํด ์ง๊ธฐ ๋๋ฌธ์.
- ์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋ฐ์ดํฐ๋ฅผ ๋ฒํท์ ๋ฃ์ ๋์ ๊ฐ ๋ฒํท์ ์ ๋ ฌ ๊ณผ์ ์์ ์๋์ ์ธ ์์๋ฅผ ์ ์งํด์ค.
- ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์๋: ์ถ๊ฐ์ ์ธ ๊ณต๊ฐ์ด bucket[ ] ๊ณผ ํฌ๊ธฐ n์ ๋ฐฐ์ด B[ ] ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ์๋ฆฌ ์ ๋ ฌ ์๋.