[์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œํ•ด๊ฒฐ์ „๋žต 1๊ถŒ] 1, 2์žฅ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๊ฐ„๋‹จ ์ •๋ฆฌ

๋จธ๋ฆฌ๋ง

์ฒ˜์Œ๋ถ€ํ„ฐ ์™„์ „ํ•œ ์ฒด๊ณ„๋ฅผ ๊ฐ–์ถ”๊ณ  ๋ฐœ์ „ํ•˜๋Š” ํ•™๋ฌธ์€ ์—†์œผ๋ฏ€๋กœ, ๋ฐœ์ „ ๊ณผ์ •์—์„œ ํ•™์ž๋“ค์€ ๋ชจ๋‘ ์–ด๋‘  ์†์—์„œ ์ง๊ด€์— ์˜์กดํ•ด ํ—ค๋งค๊ฒŒ ๋œ๋‹ค.(์‚ฝ์งˆํ•œ๋‹ค.)

1. ๋ฌธ์ œ ํ•ด๊ฒฐ๊ณผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ

1.1 ๋„์ž…

๋ฉ”๋ชจ๋ฆฌ, ์‹œ๊ฐ„ ์ œํ•œ, ์žฌ์‚ฌ์šฉ์„ฑ, ๊ฐ„๊ฒฐ์„ฑ ์„ ๊ณ ๋ คํ•ด์•ผํ•จ

์ด๋Ÿฌํ•œ ์ œ์•ฝ ์กฐ๊ฑด๊ณผ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ดํ•ดํ•˜๊ณ  ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋‚ด๋Š” ๊ฒƒ์ด '๋ฌธ์ œํ•ด๊ฒฐ๋Šฅ๋ ฅ'

1.2 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ

  1. ๊ทธ๋ž˜ํ”ฝ ์ธํ„ฐํŽ˜์ด์Šค x

    ํ…์ŠคํŠธ => ํ…์ŠคํŠธ

  2. ์‹œ๊ฐ„ ์ œํ•œ, ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ ์กด์žฌ

    ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„๊ธฐ๋ฒ•, ์ž๋ฃŒ๊ตฌ์กฐ ์‚ฌ์šฉ

  3. ์ •๋‹ต, ์˜ค๋‹ต์˜ ์—ฌ๋ถ€๊ฐ€ ๋ช…ํ™•

    ๋น ๋ฅด๊ณ  ๊ฐ๊ด€์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ฃผ๊ธฐ ๋•Œ๋ฌธ

  4. ์ œ์ถœํ•œ ํ”„๋กœ๊ทธ๋žจ์˜ ์‹คํ–‰ ์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ์ œ๊ณต

    ์ž‘์€ ๋ณ€๊ฒฝ์ด ์–ด๋–ป๊ฒŒ ์˜ํ–ฅ์„ ๋ผ์น˜๋Š”์ง€ ๋ณผ ์ˆ˜ ์žˆ์Œ

  5. ์ž‘์€ ์ž‘์—…์ด๋ผ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

  6. ๊ฒฝ์Ÿํ•˜๋Š” ํ™˜๊ฒฝ

    ๊ฒฝ์Ÿ์€ ๋™๊ธฐ๊ฐ€ ๋˜๊ธฐ๋„ ํ•จ

    ์ œ์ถœ๋œ ์†Œ์Šค๋ฅผ ๋ชจ๋‘ ๊ณต๊ฐœํ•˜๋Š” ๋Œ€ํšŒ๊ฐ€ ๋งŽ์Œ

1.4 ๊ตญ๋‚ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋Œ€ํšŒ

ACM-ICPC

๋Œ€ํ•™์ƒ ๋Œ€์ƒ (3์ธ 1์กฐ)

ํƒ‘์ฝ”๋”

์˜จ๋ผ์ธ ๋Œ€ํšŒ๊ฐ€ ์žฆ์Œ

์ฝ”๋“œํฌ์Šค

๋ฐ”์•ผ๋Œ๋ฆฌ๋“œ ๋Œ€ํ•™๊ต ์˜จ๋ผ์ธ ์ฑ„์  ์‚ฌ์ดํŠธ

๊ตฌ๊ธ€ ์ฝ”๋“œ ์žผ

1.5 ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ์œ„ํ•œ ์กฐ์–ธ

๊ฐ€๋Šฅํ•œ ๋งŽ์€ ๋ฌธ์ œ

์˜จ๋ผ์ธ ์ฑ„์  ์‚ฌ์ดํŠธ ์ด์šฉ

๊ฐœ์ธ ๋…ธํŠธ๋ถ ์ค€๋น„ ( ์—ฌ๊ธฐ์„œ ๋…ธํŠธ๋ถ์€ ์œ ์šฉํ•œ ์ฝ”๋“œ๋ฅผ ์˜ฎ๊ฒจ์ ์–ด๋‘” ๊ฒƒ )

2. ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐœ๊ด€

2.2 ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •

ํŒŒ์ด๋งŒ ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ์น ํŒ์— ๋ฌธ์ œ๋ฅผ ์ ๋Š”๋‹ค.
  2. ๊ณจ๋˜˜ํžˆ ์ƒ๊ฐํ•œ๋‹ค.
  3. ์น ํŒ์— ๋‹ต์„ ์ ๋Š”๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ๋‚˜๋ˆ„์—ˆ๋‹ค *

๋ฌธ์ œ๋ฅผ ์ ์–ด๋ณด์•˜๋‹ค *

ํ˜„์žฌ ์“ฐ์ด๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

  1. ๋ฌธ์ œ๋ฅผ ์ฝ๊ณ  ์ดํ•ดํ•œ๋‹ค.
  2. ์ต์ˆ™ํ•œ ์šฉ์–ด๋กœ ์žฌ์ •์˜ํ•œ๋‹ค.
  3. ํ•ด๊ฒฐ ๊ณ„ํš์„ ์„ธ์šด๋‹ค.
  4. ๊ณ„ํš ๊ฒ€์ฆ
  5. ํ”„๋กœ๊ทธ๋žจ ๊ตฌํ˜„
  6. ๊ตฌํ˜„์„ ๋Œ์•„๋ณด๊ณ  ๊ฐœ์„ ํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณธ๋‹ค.

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๋กœ

๊ฐ•์ œ๋œ๋‹ค.

์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ

์žฌ๊ท€ ํ˜ธ์ถœ์˜ ๊นŠ์ด๊ฐ€ ๊นŠ์–ด์ ธ์„œ ์˜ด

์Šคํƒ ํ—ˆ์šฉ๋Ÿ‰์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์•Œ์•„๋‘๊ธฐ

๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ
  1. ์ฝ”๋“œ ์˜์—ญ

    ์‹คํ–‰ํ•  ํ”„๋กœ๊ทธ๋žจ์˜ ์ฝ”๋“œ

  2. ๋ฐ์ดํ„ฐ ์˜์—ญ

    ์ „์—ญ ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜

  3. ์Šคํƒ ์˜์—ญ

    ๋™์ ํ• ๋‹น (๋Ÿฐ ํƒ€์ž„์— ํฌ๊ธฐ ๊ฒฐ์ •)

  4. ํž™ ์˜์—ญ

    ์ง€์—ญ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ (์ปดํŒŒ์ผ ํƒ€์ž„์— ํฌ๊ธฐ ๊ฒฐ์ •)

์ฐธ๊ณ  : 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๋น„ํŠธ์˜ ์‹ค์ˆ˜ ์ž๋ฃŒํ˜• ์‚ฌ์šฉํ•˜๊ธฐ (์ •ํ™•๋„๋ฅผ ์œ„ํ•ด)

์‹ค์ˆ˜ ๋น„๊ตํ•˜๊ธฐ

์–ด๋Š ์ •๋„์˜ ์˜ค์ฐจ๋ฅผ ์—ผ๋‘์— ๋‘๊ณ  ๊ทธ๊ฒƒ๋ณด๋‹ค ์ž‘์œผ๋ฉด ํ†ต๊ณผ

  1. ๋น„๊ตํ•  ์‹ค์ˆ˜์˜ ํฌ๊ธฐ๋“ค์— ๋น„๋ก€ํ•œ ์˜ค์ฐจ ํ•œ๋„ ์ •ํ•˜๊ธฐ

    ์ž…๋ ฅ์œผ๋กœ ๋“ค์–ด์˜ฌ ์ตœ๋Œ€, ์ตœ์†Œ ๊ฐ’์„ ๋Œ€๋žต ์˜ˆ์ธกํ•˜์—ฌ ์˜ค์ฐจํ•œ๋„ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๊ฐ€๋Šฅ

  2. ์ƒ๋Œ€์˜ค์ฐจ ์ด์šฉ

    ๋น„๊ตํ•˜๋Š” ์ˆซ์ž๋“ค์˜ ํฌ๊ธฐ์— ๋น„๋ก€ํ•˜์—ฌ ์˜ค์ฐจ๋ฅผ ์ •ํ•˜๋Š” ๋ฐฉ์‹

    1580882024366

์ ˆ๋Œ€์˜ค์ฐจ, ์ƒ๋Œ€์˜ค์ฐจ ๋ชจ๋‘ ์ด์šฉํ•ด์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Œ

๋Œ€์†Œ ๋น„๊ต
์ •ํ™•ํ•œ ์‚ฌ์น™์—ฐ์‚ฐ

ex_ ์œ ๋ฆฌ์ˆ˜ ๊ณ„์‚ฐ์‹œ ๋ถ„๋ชจ, ๋ถ„์ž ๋‚˜๋ˆ„์–ด์„œ ๊ณ„์‚ฐ

์ฝ”๋“œ์˜ ์ˆ˜์น˜์  ์•ˆ์ •์„ฑ ํŒŒ์•…ํ•˜๊ธฐ

์ˆ˜์น˜์ ์œผ๋กœ ์•ˆ์ •์ ์ธ ํ”„๋กœ๊ทธ๋žจ : ์ž‘์€ ์˜ค์ฐจ๊ฐ€ ๋ถˆ์–ด๋‚˜์ง€ ์•Š๋Š” ํ”„๋กœ๊ทธ๋žจ

์˜ค์ฐจ์˜ ๋ฒ”์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค์„œ ๊ณ„์‚ฐํ•˜๊ธฐ

์‹ค์ˆ˜์—ฐ์‚ฐ ํ•˜์ง€ ์•Š๊ธฐ

์‹ค์ˆ˜์—ฐ์‚ฐ์€ ์ง€๊ธˆ๊นŒ์ง€ ๋ฐฐ์šด ๊ฒƒ๋งŒ์œผ๋กœ๋„ ํ™•์‹คํžˆ ์ปค๋ฒ„ํ•  ์ˆ˜ ์—†์„ ๋งŒํผ ์–ด๋ ค์›€

๋ณ€ํ˜•์„ ๊ฐ€ํ•ด์„œ ์‹ค์ˆ˜ ์—ฐ์‚ฐ์„ ์ตœ๋Œ€ํ•œ ์“ฐ์ง€ ์•Š๋„๋ก ํ•˜๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜

: ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ•œ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋ช…๋ฃŒํ•˜๊ฒŒ ์จ๋†“์€ ๊ฒƒ

์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ‰๊ฐ€ํ•˜๋Š” ๊ธฐ์ค€

  • ์‹œ๊ฐ„ (๋น ๋ฅด๊ฒŒ ๋™์ž‘) *
  • ๊ณต๊ฐ„ (์ ์€ ์šฉ๋Ÿ‰์˜ ๋ฉ”๋ชจ๋ฆฌ)

๋‘˜์ด ์ƒ์ถฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Œ

ex_ ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(๋™์  ๊ณ„ํš๋ฒ•): ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๋Š˜๋ฆฌ๊ณ  ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ

04 ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„ ๋ถ„์„

4.1 ๋„์ž…

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์†๋„ ์ธก์ •

์‚ฌ์‹ค 'ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„'์œผ๋กœ ๋ณด๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ํ•ฉํ•˜์ง€๋งŒ, ์ฒ™๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด์œ 

  1. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํ™˜๊ฒฝ์— ์˜ํ•ด ๋ฐ”๋€” ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์™ธ์ ์š”์†Œ๋ฅผ ํ†ต์ผ ์‹œ์ผœ์„œ ์ธก์ •ํ•ด์•ผํ•จ

  2. ์ž…๋ ฅ์— ๋Œ€ํ•œ ์‹คํ–‰ ์‹œ๊ฐ„์„ ๋ฐ˜์˜ํ•˜์ง€ ๋ชปํ•จ

    ์ž…๋ ฅ์˜ ํฌ๊ธฐ, ํŠน์„ฑ์— ๋”ฐ๋ผ ์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์ง

๋ฐ˜๋ณต๋ฌธ์˜ ์ง€๋ฐฐ

์ง€๋ฐฐํ•œ๋‹ค : ํ•œ ๊ฐ€์ง€ ํ•ญ๋ชฉ์ด ์ „์ฒด์˜ ๋Œ€์†Œ๋ฅผ ์ขŒ์ง€์šฐ์ง€ํ•˜๋Š” ๊ฒƒ

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์„ ์ง€๋ฐฐํ•˜๋Š” ๊ฑด ๋ฐ˜๋ณต๋ฌธ

์ˆ˜ํ–‰ ์‹œ๊ฐ„ = ์ž…๋ ฅ์˜ ํฌ๊ธฐ์— ๋Œ€ํ•œ ๋ฐ˜๋ณต๋ฌธ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜

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. ๊ธฐ์ค€์ด ๋˜๋Š” ๋ฌธ์ œ 1๊ฐœ ์ •ํ•˜๊ธฐ

  2. ๋‚˜๋จธ์ง€๋Š” ๋น„๊ต๋ฅผ ํ†ตํ•ด ํŒ๋‹จ

    ๋‚œ์ด๋„ ๋น„๊ต๋Š” 'ํ™˜์‚ฐ'์ด๋ผ๋Š” ๊ฐœ๋…์„ ์ด์šฉ

    ํ™˜์‚ฐ : ํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฅธ ๋ฌธ์ œ๋กœ ๋ฐ”๊พธ์–ด ํ‘ธ๋Š” ๊ธฐ๋ฒ•

    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 ๋„์ž…

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •๋‹น์„ฑ ์ฆ๋ช…

์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ •๋‹นํ•œ๊ฐ€?

=> ์ˆ˜ํ•™์  ๊ธฐ๋ฒ•์ด ๋™์›๋˜์–ด์•ผ ํ•จ

๋ฌธ์ œ๊ฐ€ ์—†์Œ์€ ์ฆ๋ช…ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ, ์˜ˆ์ œ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์—†์Œ

์ฆ๋ช…์„ ๊ณต๋ถ€ํ•˜๋ฉด

  1. ์ƒˆ๋กœ์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฐœ๋ฐœ ์‹œ ์ฆ๋ช… ๊ฐ€๋Šฅ
  2. ์ž์‹ ์ด ์„ค๊ณ„ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ •๋‹น์„ฑ ์‰ฝ๊ฒŒ ์ฆ๋ช… ๊ฐ€๋Šฅ

5.2 ์ˆ˜ํ•™์ ๊ท€๋‚ฉ๋ฒ•๊ณผ ๋ฐ˜๋ณต๋ฌธ ๋ถˆ๋ณ€์‹

์ˆ˜ํ•™์  ๊ท€๋‚ฉ๋ฒ• : ๋ฐ˜๋ณต์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋Š” ๋ช…์ œ ์ฆ๋ช…์— ์ข‹์Œ

  1. ๋‹จ๊ณ„ ๋‚˜๋ˆ„๊ธฐ

  2. ์ฒซ๋‹จ๊ณ„ ์ฆ๋ช…

  3. ๊ท€๋‚ฉ ์ฆ๋ช…

    ํ•œ ๋‹จ๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ฉด ๊ทธ ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋„ ์„ฑ๋ฆฝํ•จ์„ ์ฆ๋ช…

๋ฐ˜๋ณต๋ฌธ ๋ถˆ๋ณ€์‹

๋ฐ˜๋ณต๋ฌธ์˜ ๋‚ด์šฉ์ด ํ•œ ๋ฒˆ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ค‘๊ฐ„๊ฒฐ๊ณผ๊ฐ€ ์›ํ•˜๋Š” ์ตœ์ข…๊ฒฐ๊ณผ๋กœ ๊ฐ€๋Š” ๊ธธ ์œ„์— ์žˆ๋Š”์ง€ ๋ช…์‹œํ•˜๋Š” ์กฐ๊ฑด

๋ถˆ๋ณ€์‹์ด๊ธฐ ๋•Œ๋ฌธ์— ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๊ณ„์† ์„ฑ๋ฆฝํ•ด์•ผํ•จ

  1. ๋ฐ˜๋ณต๋ฌธ ์ง„์ž…์‹œ ๋ถˆ๋ณ€์‹ ์„ฑ๋ฆฝ ์ฆ๋ช…

  2. ๋ฐ˜๋ณต๋ฌธ ๋‚ด์šฉ์ด ๋ถˆ๋ณ€์‹์„ ๊นจ๋œจ๋ฆฌ์ง€ ์•Š์Œ์„ ์ฆ๋ช…

    ๋ฐ˜๋ณต๋ฌธ ์‹œ์ž‘๊ณผ ๋์—์„œ ๋ชจ๋‘ ์„ฑ๋ฆฝ

  3. ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ์‹œ ๋ถˆ๋ณ€์‹ ์„ฑ๋ฆฝ ์ฆ๋ช… (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๋‹จ์›์„ ๋ณด๋ฉด์„œ ๊ฐ„๋‹จํžˆ ์ฝ์–ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์„๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต๊ณ  ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๋‚ด์šฉ์ด ๊ฝค ์žˆ์—ˆ๋‹ค. ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ํŒŒํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ํฅ๋ฏธ๋ฅผ ์žƒ๊ธฐ ์‰ฌ์› ์ง€๋งŒ ๋‹ค ์ฝ์–ด์„œ ๋‹คํ–‰์ด๋‹ค ใ… ใ…  ํ˜„์žฌ ์ฝ๊ณ ๋„ ์ดํ•ด ์•ˆ๋˜๋Š” ๋ถ€๋ถ„์ด๋‚˜ ๋ฒŒ์จ ๊นŒ๋จน์€ ๊ฒƒ๋„ ๋งŽ์ง€๋งŒ ๋‹ค์‹œ ๋ณด๊ธฐ๋ณด๋‹ค๋Š” ์ด๋Ÿฌํ•œ ๋‚ด์šฉ์ด ์žˆ์—ˆ์Œ์„ ๊ธฐ์–ตํ•˜๊ณ  ๋‹ค์Œ์— ํ•„์š”ํ•  ๋•Œ ์ด ๊ฒŒ์‹œ๋ฌผ์„ ๋‹ค์‹œ ๋ด์•ผ๊ฒ ๋‹ค. ์‹œ๊ฐ„ ๋ณต์žก๋„ ๊ณ„์‚ฐ์ด๋‚˜ ๊ณ„์‚ฐ ๋ณต์žก๋„ ์ด๋ก ์€ ์ „๊ณต ํ•™์Šต ์ค‘์— ๋ฐฐ์šด ๊ธฐ์–ต์ด ์žˆ์ง€๋งŒ, ์™„๋ฒฝํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์—ˆ๋Š”๋ฐ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋ณด๊ณ  ์ดํ•ด๊ฐ€ ๋œ ๊ฒƒ ๊ฐ™์•„์„œ ๊ธฐ์˜๋‹ค. ์ด์ œ๋ถ€ํ„ฐ๋Š” ๋ฌธ์ œ ํ’€์ด!

๋ฐ˜์‘ํ˜•