ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๊ฐ๋ฐ 1-2
* 2015๋
๊ฒฝํฌ๋ํ๊ต DASOM ๋์๋ฆฌ์์ ์งํ๋ ์คํฐ๋ ๋ด์ฉ์
๋๋ค.ย
์ด๋ฒ์๋ ์ด๋ฐ ๊ณ ๊ธ์ธ์ด๋ค์ด ์ด๋ป๊ฒ ํด์ ์ปดํจํฐ์ ๋ช
๋ น์ ๋ด๋ฆฌ๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ปดํจํฐ๊ฐ ๊ณ ๊ธ์ธ์ด๋ค์ ์ดํดํ๊ธฐ ์ํด์๋ ๊ธฐ๊ณ์ด(๋๋ ์ด์
๋ธ๋ฆฌ์ด)๋ก ๋ฒ์ญํด์ค ์ผ์ข
์ย โ๋ฒ์ญ๊ฐโ๊ฐ ํ์ํฉ๋๋ค.
์ด๋ฐ ๋ฒ์ญ๊ธฐ๋ย โํ๋ก๊ทธ๋จโ์ผ๋ก์จ ์ ์๋์ด ์ง๋๋ฐ, ์ฐ๋ฆฌ๊ฐ C++์ ์งค๋ ์ฌ์ฉํ๋ Visual Studio๋ ์ปดํ์ผ๋ฌ๋ผ๋ ๋ฒ์ญ๊ธฐ๋ฅผ ๋ด์ฅํ๊ณ ์๊ณ , Java๋ javac๋ผ๋ ์๋ฐ ์ปดํ์ผ๋ฌ๊ฐ ๋ด์ฅ๋์ด์์ต๋๋ค. python๋ python์ธํฐํ๋ฆฌํฐ๋ฅผ ๋ด์ฅํ๊ณ ์๊ณ ์
์ด๋ฐ ๋ฒ์ญํ๋ก๊ทธ๋จ๋ค์ ํฌ๊ฒย โ์ปดํ์ผ๋ฌโ์ย โ์ธํฐํ๋ฆฌํฐโ๋ก ๋๋์ด ์ง๋๋ค.
์ปดํ์ผ๋ฌ๋ ํ๋ก๊ทธ๋จ ์ ์์์ ๋๋ ์ปดํ์ผ ์์ ์ ํ๋ก๊ทธ๋จ์ ์ ๋ถ ๊ธฐ๊ณ๊ฐ ์ดํดํ ์ ์๋ ๋ฌธ์ฅ์ผ๋ก ๋ฒ์ญํ๋ ๊ฒ์ด๊ณ , ์ธํฐํ๋ฆฌํฐ๋ ์์ค์ฝ๋๋ฅผ ์คํํ์ผ์ผ๋ก, ๊ธฐ๊ณ์ ๋ฐ๋ก ๋ช
๋ น์ ๋ด๋ฆฌ๊ฒ ๋ฉ๋๋ค.
์ปดํ์ผ์ ๋ํ์ ์๋ ์์์ ์ธ๊ธํ C/C++์ด ์๊ณ
์ธํฐํ๋ฆฌํ
์ ๋ํ์ ์๋ Python์ด ํด๋น๋ฉ๋๋ค.
์ปดํ์ผ์ ๊ฒฝ์ฐ ์ธํฐํ๋ฆฌํ
์ ๋นํด ์๋๊ฐ ๋งค์ฐ ๋น ๋ฆ
๋๋ค. (๋ฐํ์, ์ฆ ์ํ์๊ฐ์ ๋ฌธ๋ฒ์ ๋ถ์ํ์ง ์๊ณ ๋ฐ๋ก๋ฐ๋ก ์คํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์), ๋ํ ์ธํฐํ๋ฆฌํ
์ ์์ค์ฝ๋๋ฅผ ๊ทธ๋๋ก ๊ณต๊ฐํ์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ณด์์๋ ์ทจ์ฝํ ํธ์ด์ฃ .
ํ์ง๋ง ์ธํฐํ๋ฆฌํ
์ธ์ด๋ ์ฝ๋ค๋ ์ฅ์ ์ด๋, ๊ฐ๋ฒผ์ด ์ธ์ด๋ฅผ ๊ตฌ์ฑํ ์ ์๋ค๋ ์ฅ์ ์ด ์กด์ฌํ๊ธฐ์ ์ด ๋ ๋ฐฉ๋ฒ์ด ๋๋ฆฌ ์ฐ์ด๊ณ , ๋๋ก ํผ์ฉ๋์ด์ ์ฐ์ด๊ธฐ๋ ํฉ๋๋ค.
์ด๋ฒ ํด๋์ค์์๋ ์ปดํ์ผ๋ฌ๋ฅผ ๊ตฌ์ฑํ๊ธฐ์๋ ๋์ด๋๊ฐ ์์ผ๋ฏ๋ก, ๋จ์ํ ํํ์ ์ธํฐํ๋ฆฌํฐ๋ฅผ ๊ตฌํํ๋๊ฒ์ ๋ชฉํ๋ก ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ณธ๊ฒฉ์ ์ธ ๊ตฌํ์ ์์ ์ฐ๋ฆฌ๊ฐ ๋ฌด์๋ฌด์์ ๊ตฌํํด์ผ ํ๋์ง ์ดํด ๋ด
์๋ค.
ํ๋์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์์ฑ๋ค์ ๊ฐ์ง๊ณ ์๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค.
์ฐ์ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ด์ผํฉ๋๋ค,
์ฌ์ฉ์๊ฐ ํ๋ก๊ทธ๋จ๊ณผ ์ํธ์์ฉ ํ๊ธฐ ์ํด์๋ ์์ฃผ ํ์์ ์ธ ์์์ด์ฃ .
๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ์ฐ์ด ๊ฐ๋ฅํด์ผ ํฉ๋๋ค.
์ด๋ฐ ์ฐ์ฐ์ด ๊ฐ๋ฅํ๊ธฐ ์ํด์๋ ์ ์ฅ๊ณต๊ฐ๋ ํ์ํ๊ณ ,ย
์ ๋นํ ๋์ ๋ฐ๋ผ ์ฐ์ฐ์ ๋ฌ๋ฆฌ ์ํํ๋ ค๋ฉด ๋ก์ง๋ ํ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋ก๊ทธ๋จ์ ๊ตฌํ์ ๊ฐ์ํ ์์ผ์ค ํจ์๋ ๋น์ฐํ ํ์ํฉ๋๋ค.
ํ์ง๋ง ์ด๋ฐ๊ฒ๋ค์ ์ ๋ถ ์ง์ํด๋ ๋งค๋ฒ Ctrl+C, Ctrl+V๋ก ์ง์ผํ๋ค๋ฉด ๋ถํธํ๊ฒ ์ฃ ?
๋ชจ๋ํ, ๋ชจ๋์ฝ์
์ ์ง์ํ์ฌ ๋ฐ๋ณต์ ์ธ ๊ฐ๋ฐ์์
์ ๋จ์ํ ์์ผ์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ด ํด๋์ค์์ ์ด๋ฌํ ์์ฑ์ ๊ฐ์ง ์ธ์ด๋ฅผ ๊ฐ๋ฐํ ์์ ์
๋๋ค.
์ธ์ด์ ๊ฐ๋ฐ์ C++๋ก ์ด๋ฃจ์ด ์ง ํ๋ C++์ ๋ํด ๊ธฐ๋ณธ์ ์ธ ๋ฌธ๋ฒ์ ์ดํด๊ฐ ํ์ํฉ๋๋ค.
์ฌ๊ธฐ์๋ ๊ฐ๋ณ๊ฒ ํ๋ ๋๋์ผ๋ก ์งํํ๋ ๋ํ
์ผํ ๋ด์ฉ์ ์ฌ๋ฌ ์ ๊ณต์์ ์ด๋, ์จ๋ผ์ธ ๊ฐ์๋ฑ์ ์ถ์ฒํ๋ ๋ฐ์
๋๋ค.
์๋์ ๋ด์ฉ์ ๋ฌธ๋ฒ์ ๋ชจ๋ฅธ๋ค๋ฉด ๋จผ์ ๊ณต๋ถํ๊ณ ์์ผํฉ๋๋ค!ย
1. ๊ธฐ๋ณธ์
์ถ๋ ฅ๊ณผ ํ์ผ์
์ถ๋ ฅ์ด ํ์ํฉ๋๋ค.
2. if, else if, else ๋ฑ์ ๋ถ๊ธฐ๋ฌธ์ด ํ์ํฉ๋๋ค.
3. for, while, do~while ๋ฑ์ ๋ฐ๋ณต๋ฌธ์ด ํ์ํฉ๋๋ค.
(ํนํ for๋ฌธ์ ์์ ์์ฌ๋ก ๋ค๋ฃฐ ์ ์์ด์ผ ํฉ๋๋ค.)
4. ํจ์์ ์ ์ธ๊ณผ ํธ์ถ์ด ๊ฐ๋ฅํด์ผํ๊ณ , parameter์ return value์ ์ดํด๋ ํ์ํฉ๋๋ค.
5. string ํค๋์ std string์ ์ดํดํ๊ณ ์ธ ์ ์์ด์ผ ํฉ๋๋ค.
6. ๋ค์ฐจ์ ๋ฐฐ์ด๊ณผ ๋์ ํ ๋น์ ์ดํดํ ์ ์์ด์ผ ํฉ๋๋ค.
7. ์ํ ๋ค์ด์ด๊ทธ๋จ์ ๋ํด์ ์ดํดํ์ฌ์ผ ํฉ๋๋ค.
์ ๋ด์ฉ์ค 1~6๋ฒ์ ๋ธ๋ก๊ทธ๋ ์ฑ
์์ ๋ง์ด ์ฐพ์๋ณผ ์ ์๊ณ , ์ด ๊ฐ์์์๋ 7๋ฒ ํญ๋ชฉ๋ง ์ค๋ช
ํ๋๋ก ํ๊ฒ ์ต๋๋ค.
ํํ ์ํ์ฒ์ด๋, ์ํ๋ค์ด์ด๊ทธ๋จ๋ฑ์ผ๋ก ๋ถ๋ฆฌ๊ณ , FSM(์ ํ์ํ๊ธฐ๊ณ)๋ผ๋ ๋จ์ด๋ก๋ ๋ฌถ์ด์ ๋ถ๋ฅด๊ธฐ๋ ํฉ๋๋ค.
์ ํ ์ํ๊ธฐ๊ณ ์์๋ ์ผ๋จ phase๋๋ state๋ผ๊ณ ์ ์๋๋ย โ์ํโ๊ฐ ์กด์ฌํฉ๋๋ค.
์ํ๋ ๊ฐ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ค๋ฅธ ์ํ๋ก ์ด๋ํ๊ฒ ๋ฉ๋๋ค.
์๋ฅผ๋ค์ด์ ์ปดํ์ผ๋ฌ์์ย โniceโ๋ผ๋ ๋ฌธ๊ตฌ๊ฐ ๋ค์ด์ค๋์ง ์ฐพ๋๋ค๋ฉด ์์ ๊ฐ์ ์ํ์ฒ์ด๋๋ฅผ ๊ฐ์ง๊ฒ ๋๋๊ฒ์ด์ฃ .
๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ๋ฆฌ๊ฐ ์ง๋ ์ธํฐํ๋ฆฌํฐ๋ ์์ ๋ฐฉ์์ผ๋ก ํ์ฑ์ ์งํํ๊ณ , ๋ฌธ๋ฒ์ ๋ด์ฉ์ด ์ถ๊ฐ๋๋ฉด์ ์ํ์ฒ์ด๋๋ ๋งค์ฐ ๋ณต์กํด์ง๋๋ค.
BNF๋ฌธ๋ฒ์ด๋ ์ฌ๋ฌ๊ฐ์ง ๋ด์ฉ์ผ๋ก๋ ๋ฌธ๋ฒ์ ์ค๋ช
ํ๊ณ (๊ทธ๊ฒ ๊ฐ๋จํ์ง๋ง) ์ฌ๊ธฐ์๋ ์ด๋ณด์๋ค์ ์ดํด๋ฅผ ๋๊ธฐ ์ํด ์ํ๋๋ก ์ต๋ํ ์ค๋ช
ํ๊ณ ์ ํฉ๋๋ค.
(BNF, EBNF๋ฌธ๋ฒ์ ํ๋ฐ๋ถ์ ์ค๋ช
ํ ์์ ์
๋๋ค.)
์์ ์์ ๋ง๊ณ ๋, ์ํ๋๋ ๋งค์ฐ ๋ค์ํ๊ฒ ํํํ ์ ์์ต๋๋ค.
โ์
๋ ฅ๊ฐ์ด ๋ฌธ์(A-Z, a-z) ์ธ๊ฐ?โ,ย โ๋ค์ 3๊ธ์๋ง ์กด์ฌํ๋๊ฐ?โ ๋ฑ ํ๋ก๊ทธ๋๋ฐ์ ๋ํด์๋ ์ ๊ฒฝ์ฐ์ง ์๊ณ ๋ ๋ง์๋๋ก ๋
ผ๋ฆฌ๋ฅผ ๊ฐ์ ธ๋ค ์ธ ์ ์๋ค๋ ์ ์ ๋ช
์ฌํ์์ผ๋ฉด ํ๊ณ ๋ค์ ์๊ฐ๊น์ง ๊ณผ์ ๊ฐ ์์ต๋๋ค.