๋จธ๋ฆฌ๋ง
์ฒ์๋ถํฐ ์์ ํ ์ฒด๊ณ๋ฅผ ๊ฐ์ถ๊ณ ๋ฐ์ ํ๋ ํ๋ฌธ์ ์์ผ๋ฏ๋ก, ๋ฐ์ ๊ณผ์ ์์ ํ์๋ค์ ๋ชจ๋ ์ด๋ ์์์ ์ง๊ด์ ์์กดํด ํค๋งค๊ฒ ๋๋ค.(์ฝ์งํ๋ค.)
1. ๋ฌธ์ ํด๊ฒฐ๊ณผ ํ๋ก๊ทธ๋๋ฐ ๋ํ
1.1 ๋์
๋ฉ๋ชจ๋ฆฌ, ์๊ฐ ์ ํ, ์ฌ์ฌ์ฉ์ฑ, ๊ฐ๊ฒฐ์ฑ ์ ๊ณ ๋ คํด์ผํจ
์ด๋ฌํ ์ ์ฝ ์กฐ๊ฑด๊ณผ ์๊ตฌ์ฌํญ์ ์ดํดํ๊ณ ์ต์ ์ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด๋ ๊ฒ์ด '๋ฌธ์ ํด๊ฒฐ๋ฅ๋ ฅ'
1.2 ํ๋ก๊ทธ๋๋ฐ ๋ํ
-
๊ทธ๋ํฝ ์ธํฐํ์ด์ค x
ํ ์คํธ => ํ ์คํธ
-
์๊ฐ ์ ํ, ๋ฉ๋ชจ๋ฆฌ ์ ํ ์กด์ฌ
๋ค์ํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ๊ธฐ๋ฒ, ์๋ฃ๊ตฌ์กฐ ์ฌ์ฉ
-
์ ๋ต, ์ค๋ต์ ์ฌ๋ถ๊ฐ ๋ช ํ
๋น ๋ฅด๊ณ ๊ฐ๊ด์ ์ธ ํผ๋๋ฐฑ์ ์ฃผ๊ธฐ ๋๋ฌธ
-
์ ์ถํ ํ๋ก๊ทธ๋จ์ ์คํ ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ด ์ ๊ณต
์์ ๋ณ๊ฒฝ์ด ์ด๋ป๊ฒ ์ํฅ์ ๋ผ์น๋์ง ๋ณผ ์ ์์
-
์์ ์์ ์ด๋ผ ์๋ฒฝํ๊ฒ ์์ฑํ ์ ์์
-
๊ฒฝ์ํ๋ ํ๊ฒฝ
๊ฒฝ์์ ๋๊ธฐ๊ฐ ๋๊ธฐ๋ ํจ
์ ์ถ๋ ์์ค๋ฅผ ๋ชจ๋ ๊ณต๊ฐํ๋ ๋ํ๊ฐ ๋ง์
1.4 ๊ตญ๋ด ํ๋ก๊ทธ๋๋ฐ ๋ํ
ACM-ICPC
๋ํ์ ๋์ (3์ธ 1์กฐ)
ํ์ฝ๋
์จ๋ผ์ธ ๋ํ๊ฐ ์ฆ์
์ฝ๋ํฌ์ค
๋ฐ์ผ๋๋ฆฌ๋ ๋ํ๊ต ์จ๋ผ์ธ ์ฑ์ ์ฌ์ดํธ
๊ตฌ๊ธ ์ฝ๋ ์ผ
1.5 ๋ํ ์ค๋น๋ฅผ ์ํ ์กฐ์ธ
๊ฐ๋ฅํ ๋ง์ ๋ฌธ์
์จ๋ผ์ธ ์ฑ์ ์ฌ์ดํธ ์ด์ฉ
๊ฐ์ธ ๋ ธํธ๋ถ ์ค๋น ( ์ฌ๊ธฐ์ ๋ ธํธ๋ถ์ ์ ์ฉํ ์ฝ๋๋ฅผ ์ฎ๊ฒจ์ ์ด๋ ๊ฒ )
2. ๋ฌธ์ ํด๊ฒฐ ๊ฐ๊ด
2.2 ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
ํ์ด๋ง ์๊ณ ๋ฆฌ์ฆ
- ์น ํ์ ๋ฌธ์ ๋ฅผ ์ ๋๋ค.
- ๊ณจ๋ํ ์๊ฐํ๋ค.
- ์น ํ์ ๋ต์ ์ ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ๋๋์๋ค *
๋ฌธ์ ๋ฅผ ์ ์ด๋ณด์๋ค *
ํ์ฌ ์ฐ์ด๋ ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์ ๋ฅผ ์ฝ๊ณ ์ดํดํ๋ค.
- ์ต์ํ ์ฉ์ด๋ก ์ฌ์ ์ํ๋ค.
- ํด๊ฒฐ ๊ณํ์ ์ธ์ด๋ค.
- ๊ณํ ๊ฒ์ฆ
- ํ๋ก๊ทธ๋จ ๊ตฌํ
- ๊ตฌํ์ ๋์๋ณด๊ณ ๊ฐ์ ํ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณธ๋ค.
1๋จ๊ณ ๋ฌธ์ ์ฝ๊ณ ์ดํดํ๊ธฐ
๋ฌธ์ ์ ๊ถ๊ทน์ ์ธ ๋ชฉ์ ๊ณผ ์ฌ์ํ ์ ์ฝ ์กฐ๊ฑด๊น์ง ์ดํดํ๊ธฐ
2๋จ๊ณ ์ฌ์ ์์ ์ถ์ํ
๋ค๋ฃจ๊ธฐ ์ฌ์ด ๊ฐ๋ ์ผ๋ก ์์ ์ ์ธ์ด๋ก ํ์ด์ฐ๊ธฐ
๋ฌธ์ ์ ์ถ์ํ
ํ์ค์ธ๊ณ์ ๊ฐ๋ ์ ์ํ์ / ์ ์ฐํ์ ๊ฐ๋ ์ผ๋ก ํํํ๋ ๊ณผ์
์ด๋ค ๋ถ๋ถ์ ์ถ์ํํ ๊ฒ์ธ์ง ํ๋ จํ๊ธฐ!
3๋จ๊ณ ๊ณํ ์ธ์ฐ๊ธฐ
์ฌ์ฉํ ์๊ณ ๋ฆฌ์ฆ, ์๋ฃ๊ตฌ์กฐ ๊ฒฐ์
4๋จ๊ณ ๊ณํ ๊ฒ์ฆํ๊ธฐ
์๊ตฌ์กฐ๊ฑด์ ์ ํํ ์ํํ๋์ง
์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์กฐ๊ฑด์ ๋ถํฉํ์ง
5๋จ๊ณ ๊ณํ ์ํํ๊ธฐ
ํ๋ก๊ทธ๋จ ์์ฑ
6๋จ๊ณ ํ๊ณ ํ๊ธฐ
์ฅ๊ธฐ์ ์ผ๋ก ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์นจ
- ๊ธฐ๋กํ๊ธฐ
- ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋ ๋ณด๊ธฐ
2.3 ๋ฌธ์ ํด๊ฒฐ ์ ๋ต
์ง๊ด๊ณผ ์ฒด๊ณ์ ์ธ ์ ๊ทผ
๋ฌธ์ ์ ๋ต์ ๊ตฌ์กฐ์ ๋ํ ์ง๊ด์ ์ค์์ฑ
๋ง๋งํ๋ฉด ์ฒด๊ณ์ ์ธ ์ ๊ทผ์ ํด์ผํจ
์ฒด๊ณ์ ์ธ ์ ๊ทผ์ ์ํ ์ง๋ฌธ๋ค
๋น์ทํ ๋ฌธ์ ๋ฅผ ํ์ด๋ณธ ์ ์ด ์๋๊ฐ?
์ด์ ์ ์ ์ฉํ๋ ์ ๊ทผ ๋ฐฉ๋ฒ๊ณผ ๋น์ทํ ๋ฐฉ๋ฒ์ ์ฌ์ฉ
๋จ์ํ ๋ฐฉ๋ฒ์์ ์์ํ ์ ์์๊น?
๋ฌด์ํ๊ฒ ํ ์ ์์๊น?
๊ฐ์ฅ ๋จ์ํ ์๊ณ ๋ฆฌ์ฆ ๋ง๋ค์ด๋ณด๊ธฐ
์๊ณ ๋ฆฌ์ฆ ํจ์จ์ฑ์ ๊ธฐ์ค์ ์ด ๋์ด ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ์ด ์ผ๋ง๋ ๊ฐ์ ๋์๋์ง ์ฌ๋ ์ฉ๋๋ก ์ ์ฉํจ
๋ด๊ฐ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ณผ์ ์ ์์ํํ ์ ์์๊น?
๋ฌธ์ ์ ์ฃผ์ด์ง ์์ ์ ๋ ฅ์ ์ง์ ํด๊ฒฐํด๋ณด๋ ๊ฒ
์์ผ๋ก ๋ฌธ์ ํ๊ธฐ
๋ฌธ์ ๋ฅผ ๋จ์ํํ ์ ์์๊น?
๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ๋ณํํด์ ํ์ด๋ณด๊ธฐ
- ์ ์ฝ์กฐ๊ฑด ์์ ๊ธฐ
- ๋ณ์์ ์ ์ค์ด๊ธฐ
- ๋ค์ฐจ์ => 1์ฐจ์
๊ทธ๋ฆผ์ผ๋ก ๊ทธ๋ฆด ์ ์์๊น?
์ง๊ด์ ์ป๋ ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ
์ฌ๊ณ ์ฒด๊ณ๊ฐ ์ซ์์ ๋์ด๋ณด๋ค ๊ธฐํํ์ ๋ํ์ ์ง๊ด์ ์ผ๋ก ๋ฐ์๋ค์
์์์ผ๋ก ํํํ ์ ์์๊น?
์ง๊ด์ ์๋์ง๋ง ๋ฌธ์ ํด๊ฒฐ์ ๋์์ ์ค ์๋ ์๋ค.
๋ฌธ์ ๋ถํด ๊ฐ๋ฅ?
์ ์ฝ์กฐ๊ฑด์ ๋ถํด
๋ค์์๋ถํฐ ์๊ฐ?
์ฌ๋ค๋ฆฌํ๊ธฐ
์์๋ฅผ ๊ฐ์ ํ ์ ์์๊น?
๋ต๋ค์ ์ค๋ณตํ์ฌ ์ธ์ง ์๊ฒ ํด์ค
ํน์ ํํ์ ๋ต๋ง ๊ณ ๋ ค
์์ ๊ฐ์ ์ ์ฐ์ฅ์ ์ผ๋ก ์ ๊ทํ๊ธฐ๋ฒ์ด ์์
๋ต๋ค ์ค ํํ๊ฐ ๋ค๋ฅด์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ๊ฐ์ ๊ฒ๋ค์ ๋ฌถ์ ๋ค, ๋ํ๋ค๋ง ๊ณ ๋ ค
3. ์ฝ๋ฉ๊ณผ ๋๋ฒ๊น ์ ๊ดํ์ฌ
3.1 ์ฝ๋ฉ์ ์ค์์ฑ
์ฝ๊ธฐ ์ฌ์ด ์ฝ๋๋ฅผ ์์ฑํด์ผ ๋๋ฒ๊น ๋ ์ฝ๊ณ , ํ ๋ฒ์ ์ ํํ ์์ฑํ๊ธฐ ์ฌ์
3.2 ์ข์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ํ ์์น
๊ฐ๊ฒฐํ ์ฝ๋ ์์ฑ
์ ์ญ๋ณ์์ฌ์ฉ
๋ํ์์ ์์ฑํ๋ ์ฝ๋๋ ๊ตฌ์กฐ๊ฐ ๋จ์, ๋ณ์๋ฅผ ์ฝ๊ณ ์ฐ๋ ๋ถ๋ถ์ด ์ด๋์ธ์ง๊ฐ ๋ช ํํด์ ์ ์ญ ๋ณ์๋ฅผ ์ฐ๋๋ผ๋ ์๋ ๊ฒ์ด ๋ง์ด ์์
๋งคํฌ๋ก ์ฌ์ฉ
์ฝ๋ ์ฌ์ฌ์ฉ
์ฝ๋ ๋ชจ๋ํ
๊ฐ์ ์ฝ๋๊ฐ 3๋ฒ ์ด์์ด๋ฉด ํจ์๋ก ๋ถ๋ฆฌํด ์ฌ์ฌ์ฉ
๋ผ์ด๋ธ๋ฌ๋ฆฌ
ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
์๋ฃ๊ตฌ์กฐ, ๊ธฐ์ด์ ์๊ณ ๋ฆฌ์ฆ์ ์ง์ ์์ฑx
ํญ์ ๊ฐ์ ํํ๋ก ํ๋ก๊ทธ๋จ ์์ฑ
์์ฃผ ์์ฑํ๋ ์๊ณ ๋ฆฌ์ฆ, ์ฝ๋์ ๋ํด์๋ ํ ๋ฒ ๊ฒ์ฆ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ๊พธ์คํ ์ฌ์ฉ
์ผ๊ด์ ์ด๊ณ ๋ช ๋ฃํ ๋ช ๋ช ๋ฒ ์ฌ์ฉ
๋ชจํธํ์ง ์์ ๋ณ์๋ช , ํจ์๋ช ์ฌ์ฉ
์ฌ์ฉํ๋ ์ธ์ด์ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ๋ ๋ช ๋ช ๊ท์ฝ ์ตํ๊ธฐ
ํจ์๋ ์ ์ธ๋ง ๋ณด๊ณ ์ฉ๋๋ฅผ ํ์ ํ ์ ์๋๋ก
judge => isInside (์ฐธ์ ๋ฐํํ๋ ์๊ฐ์ด ์ธ์ ์ง ์ ์ ์์)
๋ชจ๋ ์๋ฃ ์ ๊ทํ ํ ์ ์ฅ
๊ฐ์ ์๋ฃ๋ฅผ ๋๊ฐ์ง ํํ๋ก ์ ์ฅํ์ง ๋ง๊ธฐ
ex_ ๋ถ์, ์ธ์ฝ๋ฉ, ๊ฐ๋, ์๊ฐ...
์๋ฃ๋ฅผ ์ ๋ ฅ๋ฐ๊ฑฐ๋ ๊ณ์ฐํ์๋ง์ ๋ฐ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ ๊ฒ์ด ์ ๊ทํ
์ฝ๋์ ๋ฐ์ดํฐ ๋ถ๋ฆฌ
๋ฐ์ดํฐ๋ฅผ ๋ณ๋์ ์์ ๋ฐฐ์ด์ ์ ์ฅ
3.3 ์์ฃผํ๋ ์ค์
์ฐ์ ์ค๋ฒํ๋ก
๊ณ์ฐ ๊ณผ์ ์์ ๋ณ์์ ํํ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฐ ์ฌ์ฉ
๋ฐฐ์ด ๋ฒ์ ๋ฐ ์์ ์ ๊ทผ
๋ฐฐ์ด ํฌ๊ธฐ๋ฅผ ์ ํ ๋ ๊ณ์ฐ์ ์ ์คํ ํด์ผํจ
์ฐพ๊ธฐ ์ด๋ ค์ด ๋ฒ๊ทธ์ (์๋ฌ๋ ๋ด์ง ์์)
์ผ๊ด๋์ง ์์ ๋ฒ์ ํํ ๋ฐฉ์ ์ฌ์ฉ
์ฌ๋ฌ ๊ฐ์ง์ ๋ฒ์ ํํ ๋ฐฉ์ ์์ด ์ฐ๋ ๊ฒฝ์ฐ ํผํ๊ธฐ
๋ซํ ๊ตฌ๊ฐ, ์ด๋ฆฐ ๊ตฌ๊ฐ ์ ์ตํฉํด์ ์ค๋ฅธ์ชฝ ์ด๋ฆฐ๊ตฌ๊ฐ ์ฌ์ฉ
ex_ a[n]์ ์ธ๋ฑ์ค ๋ฒ์๋ 0<=i<n [0,n)
- ํ ๋น ๊ตฌ๊ฐ ํํ์ด ์ฌ์์ง
- ๋ ๊ตฌ๊ฐ์ด ์ฐ์ํด ์๋์ง ์ฝ๊ฒ ์ ์ ์์
- ๊ตฌ๊ฐ์ ํฌ๊ธฐ๋ฅผ ์ฝ๊ฒ ์ ์ ์์
Off-by-one ์ค๋ฅ
๊ณ์ฐ์ ํฐ ์ค๊ธฐ๋ ๋ง์ง๋ง ํ๋๊ฐ ๋ชจ์๋ผ๊ฑฐ๋ ํ๋๊ฐ ๋ง์์ ํ๋ฆฌ๋ ์ฝ๋์ ์ค๋ฅ
๊ฐ๋จํ ์์ ๋ก ์ง์ ์ ๊ณ์ฐ ํด๋ณด๊ธฐ
์ปดํ์ผ๋ฌ๊ฐ ์ก์์ฃผ์ง ๋ชปํ๋ ์์ ์คํ
์ฌ์ฉํ๋ ์ธ์ด์์ ์์์ ํ์ ์ ์ด๋ป๊ฒ ์ง์ ํ๋์ง
์ง์ ํ์ง ์์ ๋๋ ์ด๋ค ํํ๋ก ๊ฐ์ ๋๋์ง ์์๋๊ธฐ
python
์ ์๊ฐ ๋ค์ด๊ฐ๋ฉด int๋ก
์ค์๊ฐ ๋ค์ด๊ฐ๋ฉด
๋๋์
์ฐ์ฐ์ด ๋ค์ด๊ฐ๋ฉด float๋ก
""๊ฐ ๋ค์ด๊ฐ๋ฉด str๋ก
[]๊ฐ ๋ค์ด๊ฐ๋ฉด list๋ก
{}๊ฐ ๋ค์ด๊ฐ๋ฉด dict๋ก
input()์ str๋ก
๊ฐ์ ๋๋ค.
์คํ ์ค๋ฒํ๋ก
์ฌ๊ท ํธ์ถ์ ๊น์ด๊ฐ ๊น์ด์ ธ์ ์ด
์คํ ํ์ฉ๋์ ๋ํด ๋ฏธ๋ฆฌ ์์๋๊ธฐ
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ
-
์ฝ๋ ์์ญ
์คํํ ํ๋ก๊ทธ๋จ์ ์ฝ๋
-
๋ฐ์ดํฐ ์์ญ
์ ์ญ ๋ณ์, ์ ์ ๋ณ์
-
์คํ ์์ญ
๋์ ํ ๋น (๋ฐ ํ์์ ํฌ๊ธฐ ๊ฒฐ์ )
-
ํ ์์ญ
์ง์ญ๋ณ์, ๋งค๊ฐ๋ณ์ (์ปดํ์ผ ํ์์ ํฌ๊ธฐ ๊ฒฐ์ )
์ฐธ๊ณ : http://tcpschool.com/c/c_memory_structure
๋ค์ฐจ์ ๋ฐฐ์ด ์ธ๋ฑ์ค ์์ ๋ฐ๊ฟ์ฐ๊ธฐ
ํน์ ๋ฐฐ์ด์ ์ ๊ทผํ๋ ์์น๋ฅผ ํ๋๋ก ํต์ผ
์๋ชป๋ ๋น๊ต ํจ์ ์์ฑ
์ต์, ์ต๋ ์์ธ ์๋ชป ๋ค๋ฃจ๊ธฐ
์ต๋, ์ต์ ์ ๋ ฅ์ ๋ํด ์ ๋๋ก ๋์ํ ์ง ์๊ฐํด๋ณด๊ธฐ
์ฐ์ฐ์ ์ฐ์ ์์ ์๋ชป์ฐ๊ธฐ
๊ดํธ์ฌ์ฉ
๋๋ฌด ๋๋ฆฐ ์ ์ถ๋ ฅ ๋ฐฉ์ ์ ํ
๊ณ ์์ค์ ์ ์ถ๋ ฅ ๋ฐฉ์ ์ด์ฉ => ์ฝ๋๋ ๊ฐ๋จํ์ง๋ง ์๋ ์ ํ๊ฐ ํผ
์ ๋ ฅ, ์ถ๋ ฅ ๋ณ์์ ์๊ฐ 1๋ง ๊ฐ๋ฅผ ๋์ด๊ฐ๋ฉด ์๊ฐํด๋ณด๊ธฐ
๋ณ์ ์ด๊ธฐํ ๋ฌธ์
ํ ๋ฒ์ ์คํ์ ์ฌ๋ฌ testcase ์ถ๋ ฅ์ ๊ตฌํ๋ผ๋ ๋ฌธ์ ์์
์ด์ ์ ๋ ฅ์์ ์ฌ์ฉํ ์ ์ญ ๋ณ์ ๊ฐ์ ์ด๊ธฐํํ์ง ์๊ณ ๊ทธ๋๋ก ์ฌ์ฉํ๋ ์ค์๋ฅผ ํ ์ ์์
testcase๋ฅผ ํ๋ฒ ๋ ์คํํ๊ฒ ํด๋ณด๊ธฐ
์ฌ๋ฌ testcase๋ฅผ ์คํ์์ผ๋ณด๊ธฐ
3.4 ๋๋ฒ๊น ๊ณผ ํ ์คํ
๋๋ฒ๊น
์์ค์ฝ๋๊ฐ ๊ทธ๋ฆฌ ๊ธธ์ง ์๊ธฐ ๋๋ฌธ์ ๋์ผ๋ก ๋๋ฒ๊น ํ๋ ์ชฝ์ด ๋ ๋น ๋ฅธ ๊ฒฝ์ฐ๊ฐ ๋ง์
์ฌ๊ท ํธ์ถ, ์ค๋ณต ๋ฐ๋ณต๋ฌธ์ ๋๋ฒ๊ฑฐ ์ฌ์ฉ ์ ์ ์ x
๋๋ฒ๊ฑฐ ์์ด ๋ฒ๊ทธ๋ฅผ ์ฐพ์๋ด๋ ์ฐ์ตํ๊ธฐ
-
์์ ์ ๋ ฅ์ ๋ํด ์ ๋๋ก ์คํ๋๋ ํ์ธ
-
๋จ์ ๋ฌธ ์ฐ๊ธฐ
๋จ์ ๋ฌธ : ์ฃผ์ด์ง ์กฐ๊ฑด์ด ๊ฑฐ์ง์ผ ๋ ์ค๋ฅ๋ฅผ ๋ด๊ณ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ์ข ๋ฃ ์ํค๋ ํจ์, ๊ตฌ๋ฌธ
-
๊ณ์ฐ ์ค๊ฐ ๊ฒฐ๊ณผ ์ถ๋ ฅ
๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ด๊ณ ์ข ๋ฃํ๋ ๊ฒฝ์ฐ ๋๋ฒ๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์!
ํ๋ก๊ทธ๋จ์ด ์ด๋์ ์ ์ฃฝ๋์ง ๊ฐ๋จํ ํ์ธ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ
ํ ์คํธ
์ ์ถ ์ ์ ์์ ์ ๋ ฅ์ ๋ง๋ค์ด ๊ฐ๋ฅํ ํ ๋ง์ ์์ ๋ฅผ ํ ์คํธ
-
์ค์บํด๋ฉ
๊ฑด๋ฌผ์ ์ง๊ฑฐ๋ ๋ณด์ํ ๋ ์ด๋ํ๊ธฐ ์ํด ์ค์นํ๋ ์์ ๊ตฌ์กฐ๋ฌผ
ํ๋ก๊ทธ๋๋ฐ์์๋ ๋ค๋ฅธ ์ฝ๋ ๊ฐ๋ฐ ์ ๋ผ๋๋ฅผ ์ํด ์์๋ก ์ฌ์ฉํ๋ ์ฝ๋
์์์ ์ ๋ ฅ์ ์๋ ์์ฑํด ํ๋ก๊ทธ๋จ์ ๋๋ ค์ ๋ต์์ ๊ฒ์ฆํ๋ ํ๋ก๊ทธ๋จ์ ์ง๊ธฐ
3.5 ๋ณ์ ๋ฒ์์ ์ดํด
์ฐ์ ์ค๋ฒํ๋ก
์์ ๊ณ์ฐ ๊ฐ์ด ๋ฐํ๋๋ ์๋ฃํ์ ํํ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
์ปดํจํฐ์ ์ ํ ์ค ํ๋ : ์ ํ์ฑ
-
๋๋ถ๋ถ์ PL๋ค์ ์ค๋ฒํ๋ก๊ฐ ๋๋ ๊ฒฝ๊ณ x
์ฐ์ฐ ์ ์ค๋ฒํ๋ก๋ฅผ ํ์ธํ๋ ๊ฒ์ด ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ
-
๋ ผ๋ฆฌ์ ์ ํ์ฑ์๋ง ์ง์คํ๋ฉด ์ค๋ฒํ๋ก๋ฅผ ์๊ฐํ์ง ๋ชปํ ์ ์์
๋๋ฌด ํฐ ๊ฒฐ๊ณผ
default๊ฐ ์๋ ํฐ ์ ์๋ฅผ ๋ค๋ฃฐ ๋๋ ํญ์ ๋ณ์์ ํํ์ ์ฃผ์ํ๊ธฐ
๋๋ฌด ํฐ ์ค๊ฐ ๊ฐ
์ค๊ฐ์์ ํฐ ๊ฐ์ ์ผ์์ ์ผ๋ก ๊ณ์ฐํด์ผ ํ๋ ๊ฒฝ์ฐ
๋๋ฌด ํฐ '๋ฌดํ๋' ๊ฐ
๋ฌดํ๋์ ํด๋นํ๋ ํฐ ๊ฐ์ ์ด์ฉํ ๋, ์ด ๊ฐ๋ค์ด ์๋ก ๋ํด์ง๊ฑฐ๋ ๊ณฑํด์ง๋ ๊ฒฝ์ฐ๊ฐ ์๋์ง ์ดํด๋ณด๊ณ
์๋ค๋ฉด ์ค๋ฒํ๋ก๊ฐ ๋์ง ์์ ํฌ๊ธฐ์ ๊ฐ ์ ํํ๊ธฐ
ex_ ๊ณต๋ฐฐ์, ์ดํญ๊ณ์ ๊ณ์ฐ ์ ๋ง์ด ๋ฐ์
์ค๋ฒํ๋ก ํผํด๊ฐ๊ธฐ
- ๋ ํฐ ์๋ฃํ ์ฌ์ฉ
- ์ฐ์ฐ์ ์์ ๋ณ๊ฒฝ
์๋ฃํ์ ํ๋ก๋ชจ์
ํ๋ก๋ชจ์ : ์ดํญ ์ฐ์ฐ์๋ค์ ํผ์ฐ์ฐ์ ์๋ฃํ์ด ๋ค๋ฅผ ๋ ๊ฐ์ ์๋ฃํ์ผ๋ก ๋ณํํด์ ๊ณ์ผ
์ธ์ด๋ง๋ค ์ ์ฉ๋๋ ๊ท์น์ด ๋ค๋ฆ
๋๊ฐ ๋ถํธ์๋ ์ ์ํ, ๋ถํธ์๋ ์ ์ํ์ด ์์์ ๋ ๋ฌธ์ ๋ฐ์
ex_ for(int i=0; i<seq.size()-1; ++i)
์ผ ๋, seq.size๊ฐ unsigned๋ก ๋ฐํ๋๋ฏ๋ก ๋ฐฐ์ด์ด ๋น์ด์์ ๊ฒฝ์ฐ -1์ ๊ณ์ฐํ ์ ์์ด์ ๊ต์ฅํ ํฐ ์๊ฐ ๋์ฌ ์ ์์
3.6 ์ค์ ์๋ฃํ์ ์ดํด
์ค์ ์ฐ์ฐ์ ์ด๋ ค์
์ปดํจํฐ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ ํํ๋ฏ๋ก ๋ฌดํํ ์๋ฅผ ํํํ ์ ์์ด์ ๊ทผ์ฌ๊ฐ์ผ๋ก ํํํ๊ฒ ๋จ
์ค์์ ๊ณ์ฐ์ ๋ค์ํ ์ด์ ์ ์ํด์ ๊ณ์ ๋ฐ๋ ์ ์์
IEEE 754 ํ์ค
์ค์์ ์ด์ง๋ฒ ํ๊ธฐ
๋ถ๋ ์์์ ํ๊ธฐ (์์์ ์ด ๋ ๋ค๋๋ค๋ ์๋ฏธ)
์ฌ์ฉ๊ฐ๋ฅํ bit๋ค์ ์์์ ์, ์๋์ ์ด๋์ ๋ ๋ฐฐ๋ถํ ๊ฒ์ธ๊ฐ
ํด๊ฒฐ ๋ฐฉ๋ฒ : ์์์ ์ ์์น๋ฅผ ์ฎ๊ธธ ์ ์๋๋ก ํ๊ธฐ
ex_ 11011.101 => 1.1011101
๋ถํธ: ์์/์์, ์ง์: ์์์ ์ฎ๊ธด ์นธ ์, ๊ฐ์: ์ค์์ ์ต์์ X๋นํธ
์ง์๋ ์๋์ ์ผ๋ก ์๋๋ผ๋ ๋ง์ ์๋ฅผ ํํํ ์ ์์, ๊ฐ์๋ ๊ทธ๋ฅ ์
๋ถํธ๋ 1bit ๋ถ์ฌ, ๊ฐ์ ์ง์ ์ค์๋ ์ง์์ ๋ ๋ง์ bit ๋ถ์ฌ
์๋ฃํ | ๋ถํธ๋นํธ | ์ง์๋นํธ | ๊ฐ์๋นํธ | ์ญ์ง์ ์ ํจ์๋ฆฟ์ |
---|---|---|---|---|
32๋นํธ ์ค์ํ | 1 | 8 | 23 | 6 |
64๋นํธ ์ค์ํ | 1 | 11 | 52 | 15 |
80๋นํธ ์ค์ํ | 1 | 15 | 64 | 18 |
์ค์๋ ๋๋๋ก 64๋นํธ์ ์ค์ ์๋ฃํ ์ฌ์ฉํ๊ธฐ (์ ํ๋๋ฅผ ์ํด)
์ค์ ๋น๊ตํ๊ธฐ
์ด๋ ์ ๋์ ์ค์ฐจ๋ฅผ ์ผ๋์ ๋๊ณ ๊ทธ๊ฒ๋ณด๋ค ์์ผ๋ฉด ํต๊ณผ
-
๋น๊ตํ ์ค์์ ํฌ๊ธฐ๋ค์ ๋น๋กํ ์ค์ฐจ ํ๋ ์ ํ๊ธฐ
์ ๋ ฅ์ผ๋ก ๋ค์ด์ฌ ์ต๋, ์ต์ ๊ฐ์ ๋๋ต ์์ธกํ์ฌ ์ค์ฐจํ๋ ๊ฐ์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅ
-
์๋์ค์ฐจ ์ด์ฉ
๋น๊ตํ๋ ์ซ์๋ค์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ค์ฐจ๋ฅผ ์ ํ๋ ๋ฐฉ์
์ ๋์ค์ฐจ, ์๋์ค์ฐจ ๋ชจ๋ ์ด์ฉํด์ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ข์
๋์ ๋น๊ต
์ ํํ ์ฌ์น์ฐ์ฐ
ex_ ์ ๋ฆฌ์ ๊ณ์ฐ์ ๋ถ๋ชจ, ๋ถ์ ๋๋์ด์ ๊ณ์ฐ
์ฝ๋์ ์์น์ ์์ ์ฑ ํ์ ํ๊ธฐ
์์น์ ์ผ๋ก ์์ ์ ์ธ ํ๋ก๊ทธ๋จ : ์์ ์ค์ฐจ๊ฐ ๋ถ์ด๋์ง ์๋ ํ๋ก๊ทธ๋จ
์ค์ฐจ์ ๋ฒ์๋ฅผ ๊ฐ์ง๊ณ ์ฌ๋ฌ๋ฒ ๋ฐ๋ณต๋ฌธ์ ๋๋ ค์ ๊ณ์ฐํ๊ธฐ
์ค์์ฐ์ฐ ํ์ง ์๊ธฐ
์ค์์ฐ์ฐ์ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๊ฒ๋ง์ผ๋ก๋ ํ์คํ ์ปค๋ฒํ ์ ์์ ๋งํผ ์ด๋ ค์
๋ณํ์ ๊ฐํด์ ์ค์ ์ฐ์ฐ์ ์ต๋ํ ์ฐ์ง ์๋๋ก ํ๊ธฐ
์๊ณ ๋ฆฌ์ฆ
: ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ ๋ช ๋ฃํ๊ฒ ์จ๋์ ๊ฒ
์๊ณ ๋ฆฌ์ฆ์ ํ๊ฐํ๋ ๊ธฐ์ค
- ์๊ฐ (๋น ๋ฅด๊ฒ ๋์) *
- ๊ณต๊ฐ (์ ์ ์ฉ๋์ ๋ฉ๋ชจ๋ฆฌ)
๋์ด ์์ถฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์
ex_ ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ(๋์ ๊ณํ๋ฒ): ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๋๋ฆฌ๊ณ ์ํ ์๊ฐ์ ์ค์ด๊ธฐ
04 ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋ ๋ถ์
4.1 ๋์
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์ธก์
์ฌ์ค 'ํ๋ก๊ทธ๋จ์ ์ํ ์๊ฐ'์ผ๋ก ๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ ํฉํ์ง๋ง, ์ฒ๋๋ก ์ฌ์ฉํ ์ ์๋ ์ด์
-
์ฌ๋ฌ๊ฐ์ง ํ๊ฒฝ์ ์ํด ๋ฐ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ์ ์์๋ฅผ ํต์ผ ์์ผ์ ์ธก์ ํด์ผํจ
-
์ ๋ ฅ์ ๋ํ ์คํ ์๊ฐ์ ๋ฐ์ํ์ง ๋ชปํจ
์ ๋ ฅ์ ํฌ๊ธฐ, ํน์ฑ์ ๋ฐ๋ผ ์ํ์๊ฐ์ด ๋ฌ๋ผ์ง
๋ฐ๋ณต๋ฌธ์ ์ง๋ฐฐ
์ง๋ฐฐํ๋ค : ํ ๊ฐ์ง ํญ๋ชฉ์ด ์ ์ฒด์ ๋์๋ฅผ ์ข์ง์ฐ์งํ๋ ๊ฒ
์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ ์ง๋ฐฐํ๋ ๊ฑด ๋ฐ๋ณต๋ฌธ
์ํ ์๊ฐ = ์ ๋ ฅ์ ํฌ๊ธฐ์ ๋ํ ๋ฐ๋ณต๋ฌธ์ ์ํ ํ์
4.2 ์ ํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ
๋ค์ด์ดํธ ํํฉ ํ์ : ์ด๋ ํ๊ท ๊ณ์ฐํ๊ธฐ
์ด๋ ํ๊ท : ์๊ฐ์ ๋ฐ๋ผ ๋ณํํ๋ ๊ฐ๋ค์ ๊ด์ฐฐํ ๋ ์ ์ฉํ๊ฒ ์ฌ์ฉํ ์ ์๋ ํต๊ณ์ ๊ธฐ์ค
M ์ด๋ ํ๊ท : ๋ง์ง๋ง M๊ฐ์ ๊ด์ฐฐ ๊ฐ์ ํ๊ท
์ํ ์๊ฐ์ด ๋ณ์์ ์ ๋น๋กํ๋(์๊ฐ ๋ณต์ก๋๊ฐ N์ธ) ์๊ณ ๋ฆฌ์ฆ์ ์ ํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ ์ด๋ผ๊ณ ํจ
๊ฐ์ฅ ์ข์ ์๊ณ ๋ฆฌ์ฆ์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์
ํ๋ฒ์ฉ ๋ณด๊ธฐ๋ง ํด๋ (๊ฐ์ฅ ๊ฐ๋จํ ์์ ์กฐ์ฐจ๋) ์ ํ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ ๋๋ฌธ
4.3 ์ ํ ์ดํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ
์ฑํ ์ ์ฌ์ง ์ฐพ๊ธฐ
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์๋ฃ์ ๋ฏธ๋ฆฌ ์๊ณ ์๋ ์ง์์ ๋ํ๋ฉด ํ๋ฒ์ฉ ๋ณด์ง๋ ์์๋ ๋จ
์ ํ ์๊ฐ๋ณด๋ค ์ ์ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฅ
์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์๊ฐ ๋ณต์ก๋๊ฐ log N์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํ ์ดํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํจ
์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๊ธฐ ๋ณต์กํจ
'์กด ๋ฒคํ๋ฆฌ๊ฐ ํ๋ก๊ทธ๋๋จธ ์์ญ ๋ช ์๊ฒ ๊ตฌํํ๋๋ก ํ์ง๋ง, ๋ฒ๊ทธ ์๋ ์ฝ๋๋ฅผ ์์ฑํ ์ฌ๋์ด ์ ๋ฐ๋ ๋์ง ์์๋ค๋ ์ผํ๊ฐ ์์'
4.4 ์ง์ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ
๋คํญ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ
์ด๋ค ๋ณ์์ ๋ํ ๊ฑฐ๋ญ์ ๊ณฑ๋ค์ ์ ํ ๊ฒฐํ์ผ๋ก ์ด๋ฃจ์ด์ง ์์ด ๋คํญ์
๋ฐ๋ณต๋ฌธ์ ์ํ ํ์๊ฐ ์ ๋ ฅ ํฌ๊ธฐ์ ๋คํญ์์ผ๋ก ํํ๋๋ ์๊ณ ๋ฆฌ์ฆ : ๋คํญ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ
์ ํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ๋ ๋คํญ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ ์ํจ
์ฌ๋ฌ ๊ฐ์ ๋ต์ด ์๊ณ ๊ฐ์ฅ ์ข์ ๋ต์ ์ฐพ๋ ๋ฌธ์ ๋ ๋ชจ๋ ๋ต์ ๊ณ ๋ คํด๋ณด๋ ๊ฒ์ด ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ
์ด๋ฐ ๊ฒฝ์ฐ์ ์ฌ๊ท ํธ์ถ์ ์ด์ฉํ ๋ฐฉ๋ฒ์ด ์ ์ฉํจ
์ง์์๊ฐ ์๊ณ ๋ฆฌ์ฆ
์ง์ ํจ์๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ ์์ฒญ๋ ์ํฅ์ ๋ฏธ์นจ
์์ง๊น์ง ์ง์์๊ฐ ์๊ณ ๋ฆฌ์ฆ๋ณด๋ค ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์ฐพ์ง ๋ชปํ ๋ฌธ์ ๋ค์ด ๋ง์
ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์์ ๊ฒฝ๊ณ๊ฐ ๋๊ณ ์์
'๋คํญ์๊ฐ ์๊ณ ๋ฆฌ์ฆ'์ด ์๋ค => ํจ์จ์ ํด๊ฒฐ ๊ฐ๋ฅ
์์ธ์ ๋ถํด์ ์ํ ์๊ฐ (?)
N์ด ์ฃผ์ด์ง๊ณ ๋ง์ฝ ์์์ด๋ฉด N-1๋ฒ ๋๋๋ ์ฐ์ฐ์ ํด๋ณด๊ธฐ ๋๋ฌธ์ ์ ํ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ณผ ์ ์์
ํ์ง๋ง N์ด ํฐ ์๊ฐ ๋๋ฉด ์ฐจ์งํ๋ bit ์ (๋ฉ๋ชจ๋ฆฌ)๊ฐ ๋ง์์ง๊ธฐ ๋๋ฌธ์ ๊ทธ ํฌ๊ธฐ์ ๋น๋กํด์ ์๊ณ ๋ฆฌ์ฆ ์ํ ์๊ฐ์ด ์ต๋ 2๋ฐฐ ์ฆ๊ฐํจ
์ง์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๊ณ ๋ณผ ์ ์์
4.5 ์๊ฐ ๋ณต์ก๋
์๊ฐ ๋ณต์ก๋ : ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ ๊ธฐ์ค
์๊ณ ๋ฆฌ์ฆ ์คํ ์ค ์ํํ๋ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์ ์๋ฅผ ์ ๋ ฅ์ ํฌ๊ธฐ์ ๋ํ ํจ์๋ก ํํ
์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ค == ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๋ ์๊ณ ๋ฆฌ์ฆ ์ํ์๊ฐ์ด ๋ ๋น ๋ฅด๊ฒ ์ฆ๊ฐํ๋ค
์ ๋ ฅ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ ํฉํ ์๊ณ ๋ฆฌ์ฆ์ด ๋ค๋ฅผ ์ ์์
์ ๋ ฅ ์ข ๋ฅ์ ๋ฐ๋ฅธ ์ํ ์๊ฐ์ ๋ณํ
์ ๋ ฅ์ ํฌ๊ธฐ๋ฟ ์๋๋ผ ์ด๋ค ํํ์ธ์ง๋ ์ํ ์๊ฐ์ ์ํฅ์ ๋ฏธ์นจ
์ด๋ ๊ฒ ์ ๋ ฅ์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ํ ์๊ฐ์ด ๋ฌ๋ผ์ง๋ ๊ฒฝ์ฐ๋ ์ต์ /์ต์ /ํ๊ท ์ ์ํ์๊ฐ์ ๋ฐ๋ก ๊ณ์ฐ
๋๋ถ๋ถ '์ต์ ์ ์ํ์๊ฐ'๊ณผ '์ํ์๊ฐ ๊ธฐ๋์น'๊ฐ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์ต์ ์ ์ํ์๊ฐ์ ์
์ ๊ทผ์ ์๊ฐ ํ๊ธฐ: O ํ๊ธฐ
Big-O Notation
์ฃผ์ด์ง ํจ์์์ ๊ฐ์ฅ ๋นจ๋ฆฌ ์ฆ๊ฐํ๋ ํญ๋ง์ ๋จ๊ธด ์ฑ ๋๋จธ์ง๋ฅผ ๋ฒ๋ฆฌ๋ ํ๊ธฐ๋ฒ
๋ฐ๋ณต๋ฌธ์ด ๋ช ๋ฒ ์ํ๋๋์ง๋ง ๋ณด๋ฉด ์์ฝ๊ฒ ๊ตฌํ ์ ์์
์์ ์๊ฐ ์๊ณ ๋ฆฌ์ฆ => O(1)
O ํ๊ธฐ๋ฒ์ ์๋ฏธ
์์๋ฅผ ๋ผ์ด๋ด์ง ์์ ์ ๊ณผ O ํ๊ธฐ๋ฒ์ผ๋ก ๋ผ์ด๋ธ ์ ์ ์ ๋นํ ํฐ ์๊ฐ ๋๋ฉด ๋ณ ์ฐจ์ด๊ฐ ์์ด์ง๋ค.
์ด ๋ ์ ์์ ์ ์ ํ ์ C๋ฅผ ๊ณฑํด์ฃผ๋ฉด ํญ์ ํ์๋ณด๋ค ํฌ๋ค๋ ์ฑ์ง์ ๋ง์กฑํ ์ ์๋ค.
ํจ์์ ์ํ์ ๋ํ๋ผ ์ ์์
์ต์ ์ ์ํ์๊ฐ๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ์ ์๋
์๊ฐ ๋ณต์ก๋ ๋ถ์ ์ฐ์ต
์ ํ ์ ๋ ฌ : ์ฃผ์ด์ง ์ ๋ ฅ์ ์์์ ์๊ด์์ด ์ผ์
์ฝ์ ์ ๋ ฌ : ์ฃผ์ด์ง ์ ๋ ฅ์ ์ ๋ ฌ ์ํ์ ๋ฐ๋ผ ๋ณต์ก๋๊ฐ ๋ฌ๋ผ์ง
์ต์ : O(N)
์ต์ : O(N^2)
์๊ฐ ๋ณต์ก๋์ ๋ถํ ์ํ ๋ถ์
๋ฐ๋ณต๋ฌธ์ ์ธ๋ ๊ฒ๋ณด๋ค ๋ ์ ํํ ๊ณ์ฐ
ํฐ ์์ ์์์ ์๊ฐ์ด ์ผ์ ํ ๋, ๊ตฌ์ฑํ๋ ์์ ์์ ์์์ ์๊ฐ์ด ๊ฐ๊ฐ ๋ฌ๋ผ๋ ์์ ์์ ์ ๊ฐฏ์๋ก ๋๋์ด์ฃผ์ด ํ๊ท ์ ๋ด๋ฉด ํญ์ ์์์๊ฐ์ด ๊ฐ์
4.6 ์ํ ์๊ฐ ์ด๋ฆผ์ง์ํ๊ธฐ
์ฃผ๋จน๊ตฌ๊ตฌ ๋ฒ์น
ํ๋ก๊ทธ๋๋ฐ ๋ํ์ ์๊ฐ ์ ํ : ์๊ฐ ๋ณต์ก๋x, ์ํ์๊ฐ o
์ ๋ ฅ์ ์ต๋ ํฌ๊ธฐ, ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ณด๊ณ ์ํ์๊ฐ์ ์ด๋ฆผ์ง์ํด์ผํจ
์
๋ ฅ์ ํฌ๊ธฐ๋ฅผ ์๊ฐ ๋ณต์ก๋์ ๋์
ํด์ ์ป์ ๋ฐ๋ณต๋ฌธ ์ํ ํ์์ ๋ํด, 1์ด ๋น ๋ฐ๋ณต๋ฌธ ์ํ ํ์๊ฐ 1์ต์ ๋์ด๊ฐ๋ฉด ์๊ฐ ์ ํ์ ์ด๊ณผํ ๊ฐ๋ฅ์ฑ์ด ์๋ค.
๋งน์ ํ๋ฉด ์๋์ง๋ง ๊ฑฐ์ ์ด๋ฐ ๊ธฐ์ค์ ์
๊ณ ๋ คํด์ผํ ๋ค๋ฅธ ์์
- ๋ฐ๋ณต๋ฌธ ๋ด๋ถ๊ฐ ๋ณต์กํ์ง
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ํจํด์ด ๋ณต์กํ์ง
- ์ธ์ด์ ์ปดํ์ผ๋ฌ
- ๊ตฌํ ์ปดํจํฐ
์ค์ ์ ์ฉ
4.7 ๊ณ์ฐ๋ณต์ก๋ ํด๋์ค : P,NP,NP-์๋น
๊ณ์ฐ๋ณต์ก๋์ด๋ก
์ด๋ก ์ปดํจํฐ๊ณผํ์ ๋ถ์ผ
๊ฐ ๋ฌธ์ ์ ๋ํด ์ด๋ฅผ ํด๊ฒฐํ๋ ์ผ๋ง๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋์ง ๋ฌธ์ ๋ฅผ ๋ถ๋ฅ, ํน์ฑ ์ฐ๊ตฌ
๋ฌธ์ ์ ํน์ฑ ๊ณต๋ถ
๋ฌด์์ด ๋ ์ด๋ ค์ด๊ฐ?
์ด๋ ค์ด ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋๋ฆฌ๋ค๋ ๊ฒ
๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ = ๋คํญ์๊ฐ์ด๋ ๊ทธ ์ด์์ ์๊ณ ๋ฆฌ์ฆ
๋คํญ์๊ฐ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ ๋ฌธ์ ๋ค์ ์งํฉ : P๋ฌธ์
์งํฉ๋ค ํ๋ํ๋๋ฅผ '๊ณ์ฐ๋ณต์ก๋ CLASS'๋ผ๊ณ ํจ
๋์ด๋์ ํจ์
P๋ฌธ์ , NP๋ฌธ์
NP๋ฌธ์ ๋ ๋คํญ์๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด ์๋ ๋ฌธ์ ๊ฐ ์๋๋ค
์ด๋ ์ฆ๋ช ํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ
NP๋ฌธ์ ๋ ๋ต์ด ์ฃผ์ด์ก์ ๋ ์ ๋ต์ธ์ง ๋คํญ์๊ฐ ๋ด์ ํ์ธํ ์ ์๋ ๋ฌธ์
์ด๋ ค์ด ๋ฌธ์ ํ๋จ
-
๊ธฐ์ค์ด ๋๋ ๋ฌธ์ 1๊ฐ ์ ํ๊ธฐ
-
๋๋จธ์ง๋ ๋น๊ต๋ฅผ ํตํด ํ๋จ
๋์ด๋ ๋น๊ต๋ 'ํ์ฐ'์ด๋ผ๋ ๊ฐ๋ ์ ์ด์ฉ
ํ์ฐ : ํ ๋ฌธ์ ๋ฅผ ๋ค๋ฅธ ๋ฌธ์ ๋ก ๋ฐ๊พธ์ด ํธ๋ ๊ธฐ๋ฒ
EX_ ์ต์์น๋ ๋น๊ต์ ๋ ฌ ํ ๊ตฌํ ์ ์์ผ๋ฏ๋ก ๋น๊ต์ ๋ ฌ๋ก ํ์ฐํด์ ๊ตฌํ ์ ์์
๋น๊ต์ ๋ ฌ <=ํ์ฐ= ์ต์์น
๋น๊ต์ ๋ ฌ >= ์ต์์น
๋น๊ต์ ๋ ฌ์ด ๋ ์ด๋ ค์
NP๋ฌธ์ , NP๋ํด๋ฌธ์
๊ธฐ์ค ๋ฌธ์
SAT๋ฌธ์
N๊ฐ์ boolean๊ฐ ๋ณ์๋ก ๋ ๋ ผ๋ฆฌ์์ ์ฐธ์ผ๋ก ๋ง๋๋ ๋ณ์ ๊ฐ ์กฐํฉ ์ฐพ๊ธฐ
SAT๋ฌธ์ ๋ ๋ชจ๋ np๋ฌธ์ ์ด์์ผ๋ก ์ด๋ ค์
SAT๋ฅผ ๋คํญ์๊ฐ ๋ด์ ํ ์ ์์ผ๋ฉด NP๋ ํ ์ ์์
NP๋ํด ๋ฌธ์ : NP๋ฌธ์ ์ค SAP๊ฐ ํ๋ฆฐ NP๋ฌธ์
NP์๋น๋ฌธ์ : NP๋ฌธ์ ์ NP๋ํด๋ฌธ์ ์ ๊ต์งํฉ
ex_ ๋ถ๋ถ์งํฉ์ ํฉ ๋ฌธ์
P=NP?
NP์ ๋ฌธ์ ํ๋๋ฅผ ๋คํญ์๊ฐ์ ํ ์ ์์
=> NP์ ๋ชจ๋ ๋ฌธ์ ๋ฅผ ๋คํญ์๊ฐ์ ํ ์ ์์
=> P=NP
(์์ง๊น์ง ๋ฏธํด๊ฒฐ)
05. ์๊ณ ๋ฆฌ์ฆ์ ์ ๋น์ฑ ์ฆ๋ช
5.1 ๋์
์๊ณ ๋ฆฌ์ฆ์ ์ ๋น์ฑ ์ฆ๋ช
์๊ณ ๋ฆฌ์ฆ์ด ์ ๋นํ๊ฐ?
=> ์ํ์ ๊ธฐ๋ฒ์ด ๋์๋์ด์ผ ํจ
๋ฌธ์ ๊ฐ ์์์ ์ฆ๋ช ํด์ผํ๊ธฐ ๋๋ฌธ, ์์ ๋ก ๋ณด์ฌ์ค ์ ์์
์ฆ๋ช ์ ๊ณต๋ถํ๋ฉด
- ์๋ก์ด ์๊ณ ๋ฆฌ์ฆ ๊ฐ๋ฐ ์ ์ฆ๋ช ๊ฐ๋ฅ
- ์์ ์ด ์ค๊ณํ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋น์ฑ ์ฝ๊ฒ ์ฆ๋ช ๊ฐ๋ฅ
5.2 ์ํ์ ๊ท๋ฉ๋ฒ๊ณผ ๋ฐ๋ณต๋ฌธ ๋ถ๋ณ์
์ํ์ ๊ท๋ฉ๋ฒ : ๋ฐ๋ณต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋ ๋ช ์ ์ฆ๋ช ์ ์ข์
-
๋จ๊ณ ๋๋๊ธฐ
-
์ฒซ๋จ๊ณ ์ฆ๋ช
-
๊ท๋ฉ ์ฆ๋ช
ํ ๋จ๊ณ๊ฐ ์ฑ๋ฆฝํ๋ฉด ๊ทธ ๋ค์ ๋จ๊ณ์์๋ ์ฑ๋ฆฝํจ์ ์ฆ๋ช
๋ฐ๋ณต๋ฌธ ๋ถ๋ณ์
๋ฐ๋ณต๋ฌธ์ ๋ด์ฉ์ด ํ ๋ฒ ์คํ๋ ๋๋ง๋ค ์ค๊ฐ๊ฒฐ๊ณผ๊ฐ ์ํ๋ ์ต์ข ๊ฒฐ๊ณผ๋ก ๊ฐ๋ ๊ธธ ์์ ์๋์ง ๋ช ์ํ๋ ์กฐ๊ฑด
๋ถ๋ณ์์ด๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง๊น์ง ๊ณ์ ์ฑ๋ฆฝํด์ผํจ
-
๋ฐ๋ณต๋ฌธ ์ง์ ์ ๋ถ๋ณ์ ์ฑ๋ฆฝ ์ฆ๋ช
-
๋ฐ๋ณต๋ฌธ ๋ด์ฉ์ด ๋ถ๋ณ์์ ๊นจ๋จ๋ฆฌ์ง ์์์ ์ฆ๋ช
๋ฐ๋ณต๋ฌธ ์์๊ณผ ๋์์ ๋ชจ๋ ์ฑ๋ฆฝ
-
๋ฐ๋ณต๋ฌธ ์ข ๋ฃ์ ๋ถ๋ณ์ ์ฑ๋ฆฝ ์ฆ๋ช (1,2๋ก ๋ถํฐ ์ฆ๋ช ๋จ)
ex_)
// 1.
whlie(){
// ๋ด์ฉ ์์
// ๋ด์ฉ ๋
// 2.
}
์ฝ์ ์ ๋ ฌ๊ณผ ๋ฐ๋ณต๋ฌธ ๋ถ๋ณ์
์ฝ์ ์ ๋ ฌ ์ ๋ถ๋ณ์ (A[0,i-1]์ ์ ๋ ฌ๋์ด์๋ค.)์ ๋ง์กฑํ๋ ค๋ฉด
๋ฐ๋ณต๋ฌธ ์์์
๋ถ๋ณ์ 1. A[j+1,i]์ ๋ชจ๋ ์์๋ A[j]๋ณด๋ค ํฌ๋ค.
๋ถ๋ณ์ 2. A[0,i]์ ๋ชจ๋ ๊ตฌ๊ฐ์ A[j]๋ฅผ ์ ์ธํ๊ณ ์ ๋ ฌ๋์ด์๋ค.
์ด ๋ ๋ถ๋ณ์์ ๋ง์กฑํ๋ฉด ์ฒ์ ๋ถ๋ณ์์ ๋ง์กฑํ๋ค๊ณ ๋ณผ ์ ์์
๋จ์ ๋ฌธ ์ด์ฉ
๋จ์ ๋ฌธ์ผ๋ก ๋ถ๋ณ์์ด ๊นจ์ก์ ๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ ์ข ๋ฃ ์ํค๋ฉด ๋ถ๋ณ์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ์ฌ์ค์ ์ ์ ์์
5.3 ๊ท๋ฅ๋ฒ
: ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ฐ์ ๋ฐ๋๋๋ ์ํฉ์ ๊ฐ์ ํ๊ณ ๋ ผ๋ฆฌ๋ฅผ ์ ๊ฐํด์ ๊ฒฐ๋ก ์ด ์๋ชป๋์์ ์ฐพ์๋ด๋ ์ฆ๋ช ๊ธฐ๋ฒ
์ด๋ค ์ ํ์ด ์ต์ ์์ ์ฆ๋ช ํ๊ธฐ ์ข์
์ฑ ์ฅ์๊ธฐ
๊ท๋ฉ๋ฒ๊ณผ ๊ท๋ฅ๋ฒ
๊ฐ ๋จ๊ณ์ ์ต์ ์ ์ ํ์ ํ๋ ๊ฒ์ ๊ท๋ฅ๋ฒ์ผ๋ก ์ฆ๋ช
๊ทธ๋ ๋ค๋ฉด ๋ค์ ๋จ๊ณ์์๋ ์ต์ ์ ์ ํ์ ํ ์ ์์์ ๊ท๋ฉ๋ฒ์ผ๋ก ์ฆ๋ช
5.4 ๋ค๋ฅธ ๊ธฐ์ ๋ค
๋น๋๊ธฐ ์ง์ ์๋ฆฌ
10๋ง๋ฆฌ์ ๋น๋๊ธฐ๊ฐ 9๊ฐ์ ๋น๋๊ธฐ ์ง์ ๋ชจ๋ ๋ค์ด๊ฐ๋ค๋ฉด, 2๋ง๋ฆฌ ์ด์์ด ๋ค์ด๊ฐ ใ ฃ๋๊ธฐ์ง์ด ํ๋๋ ์๊ธฐ ๋ง๋ จ์ด๋ค.
๋์ ๋ค์ง๊ธฐ
๋ณด๋์ค ๋ฌธ์ : 100๊ฐ์ ๋์ ์ค ์๋ฉด์ด ๋ณด์ด๋ ๋์ ์ด 57๊ฐ, ํ๋ฒ์ 2๊ฐ์ ๋์ ๋ง ๋ค์ง์ ์ ์๋ค๋ฉด, ๋ชจ๋ ๋์ ์ ์๋ฉด์ด ๋ณด์ด๊ฒ ๋ค์ง๋ ๋ต์ ์ํ์? ์ด๋ป๊ฒ ์ฆ๋ช ?
๊ฐ๋ฅํ์ง ์๋ค. ํ์์ด๊ธฐ ๋๋ฌธ.
๊ท๋ฉ
๋ถ๋ณ์ : ๋์ ์ 2๋ฒ ์ด์ ๋ค์ง์ง ์๋๋ค.
์ํ ์์ ์ฐพ๊ธฐ
a = (a%b)*10์ผ ๋, a%b์ ๊ฐ์ ํญ์ [0,b-1]์ ๋ฒ์๋ฅผ ๊ฐ์
while๋ฌธ์ด b+1๋ฒ ์ด์ ๋ฐ๋ณต๋์๋ค๋ฉด, b+1๋ฒ ์ค ๋๊ฐ์ ์์๊ฐ ๋์จ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ฏ๋ก ์ํ ์์์ด๋ค.
๊ตฌ์ฑ์ ์ฆ๋ช
์ฐ๋ฆฌ๊ฐ ์ํ๋ ๋ต์ด ์กด์ฌํ๋ค๋ ์ฌ์ค์ ์ฆ๋ช
์ค์ ์๋ฅผ ๋ค๊ฑฐ๋ ๋ต์ ๋ง๋๋ ๋ฐฉ๋ฒ์ ์ ์
EX_ ํ๋์ ๋ ์ ์๋ค.
- ๋น๊ตฌ์ฑ์ ์ฆ๋ช : ๋ฒ์น, ๋ฐ๋, ๊ฐ๋ ๋ฑ๋ฑ์ ์ด๊ฑฐํด์ ์ฆ๋ช
- ๊ตฌ์ฑ์ ์ฆ๋ช : ๋นํ๊ธฐ๋ฅผ ๋ง๋ค์ด์ ๋ณด์ฌ์ค. ์ค๋ช ์๋ฅผ ๊ฑด๋ค ์ค
๊ตฌ์ฑ์ ์ฆ๋ช ์ ๋ด์ฉ์ ์ฌ์ค์ ์๊ณ ๋ฆฌ์ฆ
์๊ณ ๋ฆฌ์ฆ์ด ํญ์ ์๋ฒฝํ ์ํ๋ก ์ข ๋ฃํ๋ค๋ ๊ฒ์ ๋ณด์ด๋ฉด ๋จ
์์ ์ ๊ฒฐํผ ๋ฌธ์
์ฐธ๊ณ : ์๊ฐํ๋ ํ๋ก๊ทธ๋๋ฐ(์ธ์ฌ์ดํธ)
1,2์ฅ ์ด 5๋จ์์ ๋ณด๋ฉด์ ๊ฐ๋จํ ์ฝ์ด๋๊ฐ ์ ์์๊ฑฐ๋ผ๊ณ ์๊ฐํ๋๋ฐ, ์๊ฐ๋ณด๋ค ์ด๋ ต๊ณ ์ฒ์ ์ ํ๋ ๋ด์ฉ์ด ๊ฝค ์์๋ค. ๋ฌธ์ ๋ฅผ ํธ๋ ํํธ๊ฐ ์๋๋ผ ํฅ๋ฏธ๋ฅผ ์๊ธฐ ์ฌ์ ์ง๋ง ๋ค ์ฝ์ด์ ๋คํ์ด๋ค ใ ใ ํ์ฌ ์ฝ๊ณ ๋ ์ดํด ์๋๋ ๋ถ๋ถ์ด๋ ๋ฒ์จ ๊น๋จน์ ๊ฒ๋ ๋ง์ง๋ง ๋ค์ ๋ณด๊ธฐ๋ณด๋ค๋ ์ด๋ฌํ ๋ด์ฉ์ด ์์์์ ๊ธฐ์ตํ๊ณ ๋ค์์ ํ์ํ ๋ ์ด ๊ฒ์๋ฌผ์ ๋ค์ ๋ด์ผ๊ฒ ๋ค. ์๊ฐ ๋ณต์ก๋ ๊ณ์ฐ์ด๋ ๊ณ์ฐ ๋ณต์ก๋ ์ด๋ก ์ ์ ๊ณต ํ์ต ์ค์ ๋ฐฐ์ด ๊ธฐ์ต์ด ์์ง๋ง, ์๋ฒฝํ๊ฒ ์ดํดํ์ง ๋ชปํ์๋๋ฐ ๋ค์ ํ ๋ฒ ๋ณด๊ณ ์ดํด๊ฐ ๋ ๊ฒ ๊ฐ์์ ๊ธฐ์๋ค. ์ด์ ๋ถํฐ๋ ๋ฌธ์ ํ์ด!
Comment