๊ธ€ ์ž‘์„ฑ์ž: ๊ฐœ๋ฐœํ•˜๋Š” ํ›ˆ์ด

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/77885

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - 2๊ฐœ ์ดํ•˜๋กœ ๋‹ค๋ฅธ ๋น„ํŠธ

 

programmers.co.kr

๋ฌธ์ œ ์„ค๋ช…

์–‘์˜ ์ •์ˆ˜ x์— ๋Œ€ํ•œ ํ•จ์ˆ˜ f(x)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

  • x๋ณด๋‹ค ํฌ๊ณ  x์™€ ๋น„ํŠธ๊ฐ€ 1~2๊ฐœ ๋‹ค๋ฅธ ์ˆ˜๋“ค ์ค‘์—์„œ ์ œ์ผ ์ž‘์€ ์ˆ˜

์˜ˆ๋ฅผ ๋“ค์–ด,

  • f(2) = 3 ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์ด 2๋ณด๋‹ค ํฐ ์ˆ˜๋“ค ์ค‘์—์„œ ๋น„ํŠธ๊ฐ€ ๋‹ค๋ฅธ ์ง€์ ์ด 2๊ฐœ ์ดํ•˜์ด๋ฉด์„œ ์ œ์ผ ์ž‘์€ ์ˆ˜๊ฐ€ 3์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ˆ˜๋น„ํŠธ๋‹ค๋ฅธ ๋น„ํŠธ์˜ ๊ฐœ์ˆ˜

2 000...0010  
3 000...0011 1
  • f(7) = 11 ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ์™€ ๊ฐ™์ด 7๋ณด๋‹ค ํฐ ์ˆ˜๋“ค ์ค‘์—์„œ ๋น„ํŠธ๊ฐ€ ๋‹ค๋ฅธ ์ง€์ ์ด 2๊ฐœ ์ดํ•˜์ด๋ฉด์„œ ์ œ์ผ ์ž‘์€ ์ˆ˜๊ฐ€ 11์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ˆ˜๋น„ํŠธ๋‹ค๋ฅธ ๋น„ํŠธ์˜ ๊ฐœ์ˆ˜

7 000...0111  
8 000...1000 4
9 000...1001 3
10 000...1010 3
11 000...1011 2

์ •์ˆ˜๋“ค์ด ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. numbers์˜ ๋ชจ๋“  ์ˆ˜๋“ค์— ๋Œ€ํ•˜์—ฌ ๊ฐ ์ˆ˜์˜ f ๊ฐ’์„ ๋ฐฐ์—ด์— ์ฐจ๋ก€๋Œ€๋กœ ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

ํ’€์ด

์ฒ˜์Œ์—๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๋‚˜์ด๋ธŒํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ 1์”ฉ ๋”ํ•ด๊ฐ€๋ฉด์„œ ๊ฐ€์žฅ ์ฒ˜์Œ ๋“ฑ์žฅํ•˜๋Š” ๋น„ํŠธ์˜ ์ฐจ์ด๊ฐ€ 1์ด๋‚˜ 2์ธ ์ˆซ์ž๋ฅผ ์ฐพ์•„๋‚ด์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ๋กœ ๋งˆ์ง€๋ง‰ ๋‘ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๊ณ , ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด ํžŒํŠธ๋ฅผ ์–ป์–ด ํ’€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

 

๋จผ์ € ์ฐจ์ด๊ฐ€ 1์ด๋‚˜ 2๊ฐ€ ๋‚˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜๋ฅผ ๊ตฌํ•  ๋•Œ, ๊ธฐ์ค€ ์ˆซ์ž๊ฐ€ ์ง์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ๋ฐ”๋กœ ๋‹ค์Œ ์ˆซ์ž๊ฐ€ ์ฐจ์ด๊ฐ€ 1์ด ๋‚˜๋Š” ๊ฐ€์žฅ ์ž‘์€ ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ–ˆ์„ ๋•Œ ์ง์ˆ˜๋Š” LSB๊ฐ€ ํ•ญ์ƒ 0์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ง์ˆ˜์˜ ๋ฐ”๋กœ ๋‹ค์Œ ์ˆซ์ž๋Š” 0์„ 1๋กœ ๋งŒ๋“œ๋Š” ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ง์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ๊ธฐ์ค€ ์ˆซ์ž์—์„œ 1์„ ๋”ํ•œ ์ˆซ์ž๊ฐ€ ์ •๋‹ต์ž…๋‹ˆ๋‹ค.

 

ํ™€์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ์กฐ๊ธˆ ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ํ™€์ˆ˜๋Š” ๋งˆ์ง€๋ง‰ ๋น„ํŠธ์ธ LSB๊ฐ€ ํ•ญ์ƒ 1์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ–ˆ์„ ๋•Œ ์ตœ์†Œํ•œ์˜ ๋ณ€ํ™”๋กœ 1์„ 0์œผ๋กœ ๋งŒ๋“œ๋Š” ์ˆซ์ž๋ฅผ ๊ณจ๋ผ๋‚ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋น„ํŠธ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋น„ํŠธ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ๋‹ค์Œ ์ˆซ์ž๋ฅผ ์ฐพ์•„๋‚ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด, ์•Œ๊ณ ์ž ํ•˜๋Š” ๊ธฐ์ค€ ์ˆซ์ž๊ฐ€ 7(0000...(์ด 64๋น„ํŠธ)...0111) ์ด๋ผ๊ณ  ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ํ˜„์žฌ ์ˆซ์ž์˜ 2์ง„์ˆ˜์— ๋ณด์ˆ˜๋ฅผ ์ทจํ•˜๊ณ  ํ˜„์žฌ ์ˆซ์ž์— 1์„ ๋”ํ•œ ๊ฐ’์˜ 2์ง„์ˆ˜์™€ AND ์—ฐ์‚ฐ์„ ์ทจํ•œ๋‹ค.
    • 0000...0111์˜ ๋ณด์ˆ˜๋Š” 1111...1000 ์ž…๋‹ˆ๋‹ค.
    • 7์— 1์„ ๋”ํ•œ ๊ฐ’์€ 8์ด๊ณ , 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜๋ฉด 0000...1000 ์ด ๋ฉ๋‹ˆ๋‹ค.
    • ํ˜„์žฌ ์ˆซ์ž์ธ 0000...0111๊ณผ 1111...1000์˜ AND ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋ฉด 0000...0000 ์ด ๋ฉ๋‹ˆ๋‹ค.
      • ์—ฌ๊ธฐ์„œ 1000์˜ 1์€ LSB๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด์— ์žˆ๋Š” 0์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, 7์„ 2์ง„์ˆ˜๋กœ ๋ฐ”๊ฟจ์„ ๋•Œ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์ด์— ์žˆ๋Š” 0๋น„ํŠธ๊ฐ€ 4๋ฒˆ์งธ (0111) ์ด๊ณ , ์ด๊ณณ์„ 1๋กœ ๋งŒ๋“ค๊ณ  1์ค‘ ํ•˜๋‚˜๋ฅผ 0์œผ๋กœ ๋งŒ๋“ค๋ฉด 2๊ฐœ๋ฅผ ๋ฐ”๊ฟ” ํ˜„์žฌ ์ˆซ์ž์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ˆซ์ž๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ๊ฒฐ๊ตญ ์ด ๋‹จ๊ณ„์—์„œ ํ•œ ์ž‘์—…์€ ๊ธฐ์ค€ ์ˆซ์ž์—์„œ ์–ด๋–ค 0์„ 1๋กœ ๋ฐ”๊ฟ€์ง€๋ฅผ ๊ฒฐ์ •ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  2. ์ด์ œ ๊ธฐ์ค€์ˆซ์ž์™€ ์œ„์—์„œ ๊ตฌํ•œ์ˆซ์ž์— OR์—ฐ์‚ฐ์„ ์ทจํ•ฉ๋‹ˆ๋‹ค.
    • 0000...1000 ๊ณผ 0000...0111 ์˜ OR ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋Š” 0000...1111 ์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ํ˜„์žฌ ๋น„ํŠธ๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค.
    • 1๋‹จ๊ณ„์—์„œ ๊ตฌํ•œ ์ด์ง„์ˆ˜๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์‰ฌํ”„ํŠธํ•˜๊ณ  ๋ณด์ˆ˜๋ฅผ ์ทจํ•˜๋ฉด 1๋‹จ๊ณ„์—์„œ ์ฐพ์€ ๋ฐ”๊ฟ€ 0์˜ ์œ„์น˜์—์„œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 1์€ 0์œผ๋กœ ๋งŒ๋“ค๊ณ  ๋‚˜๋จธ์ง€๋Š” ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์นธ ์ด๋™์‹œํ‚ค๋Š” ์ด์œ ๋Š” ์ด์ง„์ˆ˜์—์„œ ๊ธฐ์ค€์ ์œผ๋กœ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์— ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด 1์„ 0์œผ๋กœ ๋ฐ”๊ฟ”์•ผ ๊ธฐ์ค€ ์ˆซ์ž์™€ ์ฐจ์ด๊ฐ€ ๊ฐ€์žฅ ์ ์€ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
      • 1๋‹จ๊ณ„์—์„œ ๊ตฌํ•œ 0000...1000์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ์นธ ์‰ฌํ”„ํŠธํ•˜๋ฉด 0000...0100์ด ๋ฉ๋‹ˆ๋‹ค.
      • ์ด ๊ฒฐ๊ณผ์— ๋ณด์ˆ˜๋ฅผ ์ทจํ•˜๋ฉด 1111...1011 ์„ ์–ป์Šต๋‹ˆ๋‹ค.
      • ํ˜„์žฌ ๊ฒฐ๊ณผ๊ฐ€ ์Œ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ์–‘์ˆ˜ ๋ณ€ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ 2-1๋‹จ๊ณ„์—์„œ ์–ป์€ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ AND ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
        • 0000...1111 ๊ณผ 1111...1011์˜ AND ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋Š” 0000...1011 ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๊ฐ’์ด ์ฃผ์–ด์ง„ ์ˆซ์ž๋ณด๋‹ค ํฐ ์ˆซ์ž๋“ค ์ค‘ ๊ฐ€์žฅ ์ž‘์€, 2๊ฐœ ์ดํ•˜์˜ ๋น„ํŠธ ์ฐจ์ด๋ฅผ ๊ฐ€์ง€๋Š” ์ˆซ์ž๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ