U E D R , A S I H C RSS

Programming Pearls/Column1


1. Cracking the oysters

ŒŒผ ๋‚ดšฉ˜ †ŒŠธ๋ฅผ –ด๋–ป๊ฒŒ •  ๊ฒƒธ๊ฐ€?

1.1. A Friendly Conversation

๋Œ€๋ถ€๋ถ„˜ –ธ–ด—๋Š” †ŒŠธ๊ฐ€ ด๋ฏธ ๊ตฌ˜„๋˜–ด žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๊ผญ ƒˆ๋กœšด ๋‚˜๋งŒ˜ †ŒŠธ๋ฅผ ๋งŒ๋“ค–ด•ผ ๋ ๋•Œ๊ฐ€ žˆ๋‹ค. ๋ ˆฝ”๋“œ๊ฐ€ •œ ฒœ๋งŒ๊ฐœฏค ๋œ๋‹ค๊ณ  •˜ž.ด๊ฒƒ„ šฐ๋ฆฌ๊ฐ€ •Œ๊ณ  žˆ๋Š” ๋ฒ„๋ธ”†ŒŠธ, €ต†ŒŠธ ๊ฐ™€ ๊ฒƒœผ๋กœ •˜๊ธฐ—๋Š” ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋งŽด ๋“ ๋‹ค. 32bit(4byte)˜  •ˆ˜๋ผ๊ณ  •œ๋‹ค๋ฉด, 40๋ฉ”๊ฐ€๋ฐ”ดŠธ๊ฐ€ •„š”•˜๋‹ค. •˜ง€๋งŒ –ด๋–ค ž‘—…„ • ๋•Œ—, šฐ๋ฆฌ๊ฐ€ †ŒŠธ— • ๋‹น•  ˆ˜ žˆ๋Š” ๊ณต๊ฐ„€ 1๋ฉ”๊ฐ€ ๋‚จง“ด๋ผ๊ณ  ๊ฐ€ ••˜ž. ‹œ๊ฐ„ด ๋งŽด ๊ธ๋ ค„œ๋„ •ˆ๋œ๋‹ค. –ด๋–ป๊ฒŒ •ด•ผ •  ๊ฒƒธ๊ฐ€? ด ๋ ˆฝ”๋“œ๋“ค€ 7ž๋ฆฌ  „™”๋ฒˆ˜ธด๊ธฐ ๋•Œ๋ฌธ— ๊ฐ™€ ๊ฒƒด —†๋‹ค๊ณ  •œ๋‹ค.

1.2. Precise Problem Statement

  • ž…๋ ฅ : ๋งŽ•„ ๋ด•ผ n๊ฐœ˜  •ˆ˜. ๊ฐ๊ฐ˜ n€ ฒœ๋งŒ๋ณด๋‹ค ž‘๋‹ค. ๋˜‘๊ฐ™€ ˆž๊ฐ€ ๋‘๋ฒˆดƒ ๋‚˜˜ค๋ฉด •ˆ๋œ๋‹ค. ๊ทธ ˆž๋ž‘ ๊ด€๋ จ๋œ ๋ฐด„ฐ๊ฐ€ —†๋‹ค.
  • ถœ๋ ฅ : ˜ค๋ฆ„ฐจˆœœผ๋กœ  •๋ ฌ๋œ ˆž๋“ค
  •  œ•œ : ๋ฉ”๋ชจ๋ฆฌ๋ฅผ 1๋ฉ”๊ฐ€  •๋„๋ฐ–— ‚ฌšฉ•  ˆ˜ —†Œ. ๋””Šคฌ ๊ณต๊ฐ„„‰๋„‰•จ. ˆ˜–‰‹œ๊ฐ„ด ˆ˜๋ถ„„„˜œผ๋ฉด •ˆ๋จ. 10ˆ  •๋„๋ฉด ๊ดœฐฎŒ.

1.3. Program Design

ฒจ—๋Š” ๋จธง€ †ŒŠธ๋ฅผ –ˆ—ˆ๋Š”๋ฐ ๋ฒ„๋ ธ๋‹ค. ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•œผ๋กœ๋Š”, ๊ฐ๊ฐ˜ ˆž๋ฅผ 4byte๋กœ ‘œ˜„•˜๋ฉด ˜„žฌ ๋ฉ”๋ชจ๋ฆฌ— 250,000๊ฐœ๋ฅผ ๋‹ด„ ˆ˜ žˆ๋‹ค. 250000๊ฐœ๋ฅผ †ŒŠธ•˜๊ณ , ๋˜ 250,000๊ฐœ ฝ๊ณ ... ด๊ธ 40๋ฒˆ •˜๋Š” ๊ฐ๋‹ค. ๋จธง€ †ŒŠธ๋Š” ค‘๊ฐ„ ž‘—… ŒŒผ—˜ —‘„Šค๊ฐ€ žฃผ ผ–ด๋‚˜๊ณ , ๋‘๋ฒˆงธ ๋ฐฉ๋ฒ•€ ž…๋ ฅ„ 40๋ฒˆ„ ๋ฐ›•„•ผ •œ๋‹ค๋Š”๊ฒŒ ๋ฌธ œ๋‹ค. ด๊ฒƒ ๋‘๊ฐ€ง€˜ žฅ „ ž˜ กฐ•ฉ•ด„œ ž…๋ ฅ€ •œ๋ฒˆ, ค‘๊ฐ„ ž‘—… ŒŒผด —†๊ฒŒ๋Š” •  ˆ˜ —†„๊นŒ?

1.4. Implementation Sketch

๋น„Šธ๋งต, ˜น€ ๋น„Šธ ๋ฒก„ฐ๋ผ ๋ถˆ๋ฆฌšฐ๋Š” ๋ฐฉ๋ฒ•ด œ šฉ• ๋“ฏ ‹ถ๋‹ค. ˜ˆ๋ฅผ ๋“ค–ด ๋งฅ‹œ๋ฉˆ 10๋ฏธ๋งŒ˜ ˆž๋ผ • ๋•Œ—, {1,2,3,5,8}„ ‘œ˜„•ด ๋ณด๋ฉด, (0 1 1 1 0 1 0 0 1 1)ด ๋œ๋‹ค. žˆœผ๋ฉด 1, —†œผ๋ฉด 0ธ ๊ฒƒด๋‹ค. •œ ˆž๋‹น 1๋น„Šธ๋งŒ • ๋‹น„ •ด„œ, ๊ทธ๊ฒƒ˜ ธ๋Šค๋กœ ฒ˜๋ฆฌ๋ฅผ •˜๋Š” ๊ฒƒด๋‹ค. •ž—„œ๋„ ๋ง–ˆ๋“ฏด, ๋ฏธ๋‹ˆ๋ฉˆ๊ณผ ๋งฅ‹œ๋ฉˆ˜ ๋„ˆ๋น„๊ฐ€ ž‘๊ณ , ๊ฐ™€ ˆž๊ฐ€ —†œผ๋ฉฐ, ๊ด€๋ จ๋œ ๋ฐด„ฐ๊ฐ€ —†๋‹ค๋Š” ธก๋ฉด—„œ ด ๋ฐฉ๋ฒ•„ “ธ ˆ˜ žˆ๋Š” ๊ฒƒด๋‹ค. ๋Œ€๊ฐ•˜ ฝ”๋“œ๋Š” ๋‹คŒ๊ณผ ๊ฐ™๋‹ค.
~cpp 
# ๋ฐฐ—ด๊ฐ’ 0œผ๋กœ …‹Œ…
for b in bits:
	b=0
# žˆœผ๋ฉด 1
for e in inputFile:
	bits[e]=1
# 1ธ๊ฒƒ๋งŒ ถœ๋ ฅ
for b in bits:
	if b==1:
		print b

1.5. Principles

ด๊ฒƒ˜ ˆ˜–‰‹œ๊ฐ„€ ฮ˜(n)ด๋‹ค. ด •„ฐ๋Š” ๋ฌธ œ๋ฅผ ฃผ˜ ๊นŠ๊ฒŒ ๋ถ„„•˜๋‹ค ๋ณด๋ฉด, ๊ฐ€๋” —„ฒญ๋‚œ ด๋“„ ๊ฐ€ ธ๋‹ค „๋•Œ๊ฐ€ žˆ๋‹ค๋Š” ๊ต›ˆ„ ฃผ๊ณ  žˆ๋‹ค. ๋ฌธ œ  •˜๋Š” ๋ฌธ œ ’€ด˜ 90”„๋กœ๋‹ค. ผ๋ฐ˜ œผ๋กœ ๋งŽ€ ๊ณต๊ฐ„„ ‚ฌšฉ•˜๋ฉด  € ‹œ๊ฐ„ด †Œš”๋œ๋‹ค๊ณ  •œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋น„Šธ๋งต †ŒŠธ๋Š” ‹œ๊ฐ„๋„ „๊ณ , ๊ณต๊ฐ„๋„ „–ด๋“ค—ˆ๋”ฐ.  € ๋ฐด„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒƒ€, ๊ทธ๊ฒƒ„ ˆ˜–‰•˜๋Š” ๋ฐ— ๋”  € ‹œ๊ฐ„ด ๋“ ๋‹ค๋Š” ๊ฒƒด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฐด„ฐ๋ฅผ ๋””Šคฌ— ๋‘๊ธฐ ๋ณด๋‹ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ƒ— ๋‘๋Š” ๊ฒƒด ๋””Šคฌ •ก„Šค ๊ฐ™€ ‹œ๊ฐ„ธ๋ฆฌ๋Š” ผ„ „ผ ˆ˜๊ฐ€ žˆ๋Š” ๊ฒƒด๋‹ค. ”„๋กœ๊ทธ๋žจ„ ๊ฐ„๋‹จ•˜๊ฒŒ งœž. œ ง€๋ณดˆ˜๋„ ‰ฝ๊ณ , ๊ฒฌ๊ณ •  ๊ฒƒด๋‹ค.


Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:24:03
Processing time 0.0135 sec