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.0146 sec