1. ์๊ฐ ๋ณต์ก๋ ๋?
(1) ๊ฐ๋
์๊ฐ ๋ณต์ก๋๋ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ํ์ํ ์ฐ์ฐ ํ์๋ฅผ ๋งํ๋ค.
(2) ํ๊ธฐ ๋ฐฉ๋ฒ์ ์ข ๋ฅ
์๊ฐ ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์๋ ๋ค์์ 3 ๊ฐ์ง๊ฐ ์๋ค.
์ด๋ฆ | ์ค๋ช |
---|---|
๋น -์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ | ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ฃผ์ด์ง ์ํฉ์ด ์ต์ ์ ์ํฉ์ผ ๋ ํ์ํ ์ฐ์ฐ ํ์๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ |
๋น -์ธํ ํ๊ธฐ๋ฒ | ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ฃผ์ด์ง ์ํฉ์ด ๋ณดํต์ ์ํฉ์ผ ๋ ํ์ํ ์ฐ์ฐ ํ์๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ |
๋น -์ค ํ๊ธฐ๋ฒ | ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด ์ฃผ์ด์ง ์ํฉ์ด ์ต์ ์ ์ํฉ์ผ ๋ ํ์ํ ์ฐ์ฐ ํ์๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ |
์๋ฅผ ๋ค์ด ์ค๋ช
1~100์ ์ซ์๊ฐ ๋๋คํ ์์๋ก ์ ์ฅ๋ ๋ฐฐ์ด์ด ์ฃผ์ด์ก์ ๋, ํด๋น ๋ฐฐ์ด์์ 56์ INDEX๋ฅผ ์ฐพ์์ ์ถ๋ ฅํ๋ผ
๋ผ๋ ๋ฌธ์ ๋ฅผ ํ์ด์ผ ํ๋ค๊ณ ํ์.
์ด๋ ๋ด๊ฐ ์ ํํ ๋ฐฉ๋ฒ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ถํฐ ์ผ์ผํ ์กฐํ
์ด๋ค.
๋น -์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ผ๋ก ์ฐ์ฐ ํ์๋ฅผ ๋ํ๋์ ๋, ์ฐ์ฐ ํ์๋ 1์ด๋ค. ์ต์ ์ ์ํฉ์์๋ 56์ด ๋ฐฐ์ด์ 0 ๋ฒ์งธ ์ธ๋ฑ์ค์ ์กด์ฌํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ์ฐ์ฐ์ ํ ๋ฒ๋ง ํด์ 56์ ์ฐพ๊ณ , ๊ทธ ์ธ๋ฑ์ค์ธ 0์ ์ถ๋ ฅํ ๊ฒ์ด๋ค.
๋น -์ธํ ํ๊ธฐ๋ฒ์ผ๋ก ์ฐ์ฐํ์๋ฅผ ๋ํ๋์ ๊ฒฝ์ฐ, ์ฐ์ฐ ํ์๋ 50์ด๋ค. ๋ณดํต์ ํ๊ท ์ ๋งํ๋ค. ์ต์ ์ ๊ฒฝ์ฐ๊ฐ ์ฐ์ฐ์ 1 ๋ฒ๋ง ํ๋ ๊ฒ์ด๋ผ๋ฉด, ์ต์ ์ ๊ฒฝ์ฐ๋ ์ฐ์ฐ์ 100 ๋ฒ ์ ๋ถ ํ๋ ๊ฒ์ผ ๊ฒ์ด๋ค. ๋ฐ๋ผ์ ํ๊ท ์ ๊ฒฝ์ฐ์ ๋๋ ์ฐ์ฐ์ ํ์๋ 50์ด๋ค. ๋ง์ฝ ๋ฌธ์ ๊ฐ 1~N ์ ์ซ์ ์ค์ 56์ INDEX๋ฅผ ์ถ๋ ฅํ๋ ๊ฒ์ด์๋ค๋ฉด, ๋น ์ธํ ํ๊ธฐ๋ฒ์ผ๋ก ๋ํ๋ธ ์ฐ์ฐ ํ์๋ N/2 ์์ ๊ฒ์ด๋ค.
๋น -์ค ํ๊ธฐ๋ฒ์ผ๋ก ์ฐ์ฐํ์๋ฅผ ๋ํ๋์ ๊ฒฝ์ฐ, ์ฐ์ฐ ํ์๋ 100๋ฒ์ด๋ค. ์ต์ ์ ์ํฉ์ ๊ฐ์ ํ๋ค๋ฉด 56์ด ๋ฐฐ์ด ๋งจ ๋์ ์์ด์ ๋ชจ๋ ๋ฐฐ์ด์ ์์๋ฅผ ์กฐํํด์ผ์ง๋ง ์ฐพ์ ์ ์์ ๊ฒ์ด๋ค. ๋ง์ฝ ์ซ์๊ฐ N๊ฐ ์ฃผ์ด์ง๋ค๋ฉด N๋ฒ์ ์กฐํํ์ฌ์ผ ํ๋ค.
- ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํ ๋๋ ๋น์ฐํ๊ฒ๋ ๋น -์ค ํ๊ธฐ๋ฒ์ ๋ง์ด ํ์ฉํ๋ค. ์ต์ ์ ์ํฉ์์๋ ๋ฌธ์ ์์ ์ ์ํ ์๊ฐ ์ด์์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
(3) Big-O ํ๊ธฐ๋ฒ ์ฐ์ฐ ํ์์ ์ ํ
์์ ํ๋ ์ฃผ์ด์ง ๋ฐ์ดํฐ ํฌ๊ธฐ(N)์ ๋ฐ๋ผ ํ์ํ Big-O ํ๊ธฐ๋ก ๋ํ๋ธ ์ฐ์ฐ ํ์์ด๋ค.
N์ ์ ๋นํ ์๋ฅผ ์ง์ด๋ฃ์ด์ ์๊ฐํด๋ณด๋ฉด, ์ ๊ฐ factorial์ด ์๊ฐ์ด ์ ์ผ ๋ง์ด ๋ค๊ณ , logN ์ด ์๊ฐ์ด ์ ์ผ ์ ๊ฒ ๋๋์ง ์ ์ ์์ ๊ฒ์ด๋ค.
2. ์ฝ๋ฉ ํ ์คํธ์์ ์๊ฐ ๋ณต์ก๋ ํ์ฉ๋ฒ
์ฝ๋ฉ ํ
์คํธ์์ ๋ฌธ์ ๋ณ๋ก ์ ํ ์๊ฐ์ด ์ฃผ์ด์ง๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ฉ ํ
์คํธ์ ์ปดํ์ผ๋ฌ๋ 1์ด ๋น ์ต๋ 1์ต ๋ฒ์ ์ฐ์ฐ
์ด ๊ฐ๋ฅํ๋ค๊ณ ๊ฐ์ ํ๋ค.
๋ง์ฝ ๋ฌธ์ ์์ 2 ์ด๊ฐ ์ฃผ์ด์ก๋ค๋ฉด, ์ด 2์ต ๋ฒ์ ์ฐ์ฐ์ด ๊ฐ๋ฅํ ๊ฒ์ด๋ค.(1์ต๋ฒ = 10์ 9์น) ํ์ง๋ง, ์ค์ ๋ฌธ์ ๋ฅผ ํ ๋, 10์ 9์น์ ๊ธฐ์ค์ผ๋ก ์๊ฐ์ ์ฐ์ฐํ๋ค๋ฉด, ์์ ์ค์์ ์ํด์ ์๊ฐ๋ณต์ก๋๊ฐ ์กฐ๊ธ๋ง ์ปค์ ธ๋ (์ต์ ํ๋ฅผ ๋ชปํ๋ ๊ฒฝ์ฐ ๋ฑ) ์๊ฐ ์ด๊ณผ๊ฐ ์ผ์ด๋จ์ผ๋ก, ๋ฌธ์ ๋ฅผ ํ ๋๋ 10์ 8์น์ ์ต๋๋ก ์ก๊ณ ํด๊ฒฐ ์ฝ๋์ ์๊ฐ ๋ณต์ก๋๋ฅผ ์ฐ์ ํ๋ ๊ฒ์ด BEST์ด๋ค.
๋ฌธ์ ๋ฅผ ํ ๋, ์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ๋ฅด๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ๋ค.
์ฃผ์ด์ง ๋ฐ์ดํฐ ํฌ๊ธฐ์์ ํน์ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ์ ๋ ๋๋ Big-O ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฌธ์ ์์ ์ฃผ์ด์ง Maximum ์ฐ์ฐ ํ์๋ณด๋ค ์๋ค๋ฉด ํด๋น ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ ๋๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด N <= 1,000,00 ์ด๊ณ , 2 ์ด๊ฐ ์ฃผ์ด์ก๋ค๋ฉด N^2 ์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, ์ฐ์ฐ ํ์๊ฐ 10,000,000,000 ๋ฒ์ด ๋ค์ด์ ์ฌ์ฉํ์ง ๋ชปํ๋ค. ํ์ง๋ง NlogN์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, 1,660,000๋ฒ์ ๊ทผ์ฌํ ์ฐ์ฐ ํ์๊ฐ ํ์ํ๋ฏ๋ก 2์ต ๋ฒ ๋ด๋ก ์ถฉ๋ถํ ๊ณ์ฐ์ด ๊ฐ๋ฅํด์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.