๐Ÿ‘‘์—…๊ณ„ ๊ฒฝํ—˜ ์—†์ด ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋œ ์ €๋Š” ์„ธ ๊ฐ€์ง€ ์ผ์„ ํ•ด์„œ ์ •๋ง ์ข‹์•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.๐Ÿ‘‘

๊ฐœ์‹œํ•˜๋‹ค
์•ˆ๋…•ํ•˜์„ธ์š”!!์ €๋Š” ์ฃผ์‹ํšŒ์‚ฌ ๋ฆฌํƒ€๋ฆฌ์ฝ”์˜ ์—”์ง€๋‹ˆ์–ด ํ›„์ฟ ์‹œ๋งˆ์ž…๋‹ˆ๋‹ค!์ด ๊ธ€์€ ใ€ŽLITALICO Advent Calendar 2021ใ€ 20์ผ์งธ ๊ธ€์ž…๋‹ˆ๋‹ค!๐Ÿ”ฅ
[๋‰ด์Šค ์ฃผ์ œ]
์Šค๋ฌผ์—ฌ์„ฏ ์‚ด์— ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋œ ๊ฒฝํ—˜์ด ์—†๋Š” ์ œ๊ฐ€ ์„ธ ๊ฐ€์ง€ ์ผ์„ ํ•œ ๊ฒŒ ๋„ˆ๋ฌด ์ข‹์•˜์–ด์š”.
ใ€๋ชฉ๋กใ€‘
1. ์ „์ œ
2. WEB ์—”์ง€๋‹ˆ์–ด์˜ ๊ธฐ์ดˆ ์ง€์‹ ๋ฐฐ์šฐ๊ธฐ
3. ์‹œ๋ จ์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•˜๋Š”'์‚ฌ๊ณ ๋ฐฉ์‹'
4. ์–ด์จŒ๋“  ๊ฐœ๋ฐœ๋Ÿ‰์„ ๋Š˜๋ ค์•ผ ํ•œ๋‹ค
5. ์š”์•ฝ
1. ์ „์ œ
์ž์‹ ์˜ ๊ฒฝ๋ ฅ
์ž์‹ ์˜ ๊ฒฝํ—˜์œผ๋กœ์„œ ๋Œ€์ถฉ ์ด๋Ÿฐ ๋Š๋‚Œ์ผ ๊ฑฐ์˜ˆ์š”.
  • ๋Œ€ํ•™: ๋ชจ ๋ฌธ๊ณผ๋Œ€ํ•™
  • ์ œ1๊ณณ: ํ•™์›๊ฐ•์‚ฌ
  • ์ œ2ํšŒ์‚ฌ: ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐ•์‚ฌ(Tec Camp ์ด๊ณณ)
  • ํ˜„์žฌ: ์—”์ง€๋‹ˆ์–ด
  • ์›๋ž˜๋ถ€ํ„ฐ ๋ฌธ๊ณผ์ƒ์ธ๋ฐ ์ทจ์งํ•œ ์—…๊ณ„์™€ IT๋Š” ์ „ํ˜€ ์ธ์—ฐ์ด ์—†๋‹ค๋ฉฐ "์–ด? ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๋ญ์ง€?"์ด๋Ÿฐ ์ƒํƒœ.ํ•˜์ง€๋งŒ ์ €๋Š” ๋…์ผ ์บ ํ”„์˜ ์ง€๋„๊ต์‚ฌ๋ฅผ ๊ฑฐ์ณ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํฅ๋ฏธ๋กœ์šด ์ ์„ ๋ฐœ๊ฒฌํ•˜๊ณ  ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ๋กœ ํ–ˆ์Šต๋‹ˆ๋‹ค.
    ์ž๊ธฐ๊ฐ€ ๋ถˆ๋ฆฌํ•˜๋‹ค๊ณ  ์—ฌ๊ธฐ๋‹ค
    ๋‚˜์˜ ๊ฒฝ์šฐ ์Šค๋ฌผ์—ฌ์„ฏ ์‚ด ๋•Œ ์—…๊ณ„ ๊ฒฝํ—˜์ด ์—†์—ˆ๊ณ  ๋ฌธ๊ณผ๋ผ๋Š” ์ƒ๋‹นํžˆ ๋ถˆ๋ฆฌํ•œ ์ƒํ™ฉ์—์„œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜์—ˆ๋‹ค.๋‚ด ๋˜๋ž˜๋‚˜ ์ Š์€์ด๋“ค๋ณด๋‹ค ์ƒ๋‹นํ•œ ๊ธฐ๋Ÿ‰์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์—ด๋“ฑ๊ฐ์„ ๋Š๋‚„ ๋•Œ๋„ ๋งŽ๋‹ค.
    ํ•˜์ง€๋งŒ ๊ณ ๋ฏผ๋„ ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค. ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๊ธฐ์ˆ ์„ ๋‹ค์†Œ๋‚˜๋งˆ ์—ฐ๋งˆํ•ด ์‹œ์žฅ ๊ฐ€์น˜๋ฅผ ๋†’์ด๊ณ  ์‹ถ๋‹ค."์ฃผ์œ„ ์‚ฌ๋žŒ๋“ค์ด ๋ฌด์Šจ ๋ง์„ ํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”...๐Ÿ˜ญใ€"์ฝ”๋“œ๋ฅผ ์ „ํ˜€ ์“ธ ์ค„ ๋ชฐ๋ผ์š”.""์–ด? ๋””์ž์ธ์ด์š”?"์ด๋Ÿฐ ์•„์‰ฌ์›€์—์„œ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด ์ œ๊ฐ€ ํ–ˆ๋˜ ์ผ์„ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.w
    2-WEB ์—”์ง€๋‹ˆ์–ด์˜ ๊ธฐ์ดˆ ํ•™์Šต
    WEB ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๊ธฐ๋ณธ ์ง€์‹์€?
    ๋‹ค์Œ ์„ธ ๊ฐ€์ง€๋Š” WEB ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๊ธฐ์ดˆ ์ง€์‹์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค.
  • WEB/์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํŒจ๋ธŒ๋ฆญ
  • ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๊ณตํ†ต ์–ธ์–ด
  • ์ด์ƒ์ ์ธ ์ธ์ฝ”๋”ฉ ๋ฐฉ๋ฒ•/๋””์ž์ธ ๋ฐฉ๋ฒ•
  • ๊ทธ๋Ÿฐ ๊ฒƒ๋“ค์„ ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด์„œ ๋‚˜๋Š” ๋…์„œ๊ฐ€ ๊ฐ€์žฅ ํŽธ๋ฆฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์ œ ๊ฐœ์ธ์ ์ธ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ์ €๋Š” ์ฑ…์„ ์•„์ฃผ ์ž˜ ์ฝ์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.๊ทธ๋Ÿฐ ๊ฑฐ ์†Œ๊ฐœํ•˜๊ณ  ์‹ถ์–ด์š”.
    ์‚ฝํ™” ๋„ํ•ด์‹ ์ด ์ฑ… ์—์„œ ๋ชจ๋‘ ์•Œ ์ˆ˜ ์žˆ๋Š” ์›น ๊ธฐ์ˆ  ์˜ ๊ธฐ๋ณธ
    ์ฑ… ์ œ๋ชฉ์ฒ˜๋Ÿผ WEB ๊ธฐ์ˆ ์˜ ๊ธฐ๋ณธ์€ ๋„ํ•ด์™€ ์„ธํŠธ๋กœ ํ•ด์„ค๋œ๋‹ค.์ด ์ฑ…์€ ์‰ฝ๊ณ  ์•Œ๊ธฐ ์‰ฌ์šด ์„ค๋ช…๊ณผ ๋„ํ•ด๋กœ ํŽผ์ณ์ง€๊ณ , ๋จธ๋ฆฌ๋กœ ์ƒ์ƒํ•˜๋ฉด์„œ ์ฝ๋Š” ๊ฒƒ์ด ํŠน์ง•์ด๋‹ค.๋„คํŠธ์›Œํฌ/์‹œ์Šคํ…œ์˜ ๊ธฐ๋ณธ ์„ค๊ณ„/์•ˆ์ „ ๊ด€๋ จ ์ฒด๊ณ„๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ณต๋ถ€ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ์ง€์‹์„ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ ํ•ฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
    ์ฝ”๋“œ ์ฝ๊ธฐ
    ๋ฌด์—‡์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ๋Œ€์ฒด์ ์œผ๋กœ ์„ค๋ช…ํ•˜์ž๋ฉด, ์•„๋ž˜์™€ ๊ฐ™๋‹ค.
  • ์ฝ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
  • ์ ๋‹นํ•œ ์ฃผ์„ ์“ฐ๊ธฐ
  • ์•„๋ฆ„๋‹ค์šด ์ฝ”๋“œ๋ฅผ ์“ฐ์‹œ๊ฒ ์–ด์š”?
  • ์ฝ๊ธฐ ์‰ฌ์šด ์กฐ๊ฑด์‹
  • ์ ์ ˆํ•œ ๋ณ€์ˆ˜ ๋ช…์นญ์˜ ๋ช…๋ช… ๋ฐฉ๋ฒ•
  • ์–ด๋–ป๊ฒŒ ๋„ˆ๋ฌด ๊ธด ์ฝ”๋“œ๋ฅผ ์ค„์ž…๋‹ˆ๊นŒ?
  • ์ž ๊น๋งŒ์š”.๋‚˜์ฒ˜๋Ÿผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๋งŒ ๋…ํ•™์œผ๋กœ ๋ฐฐ์šฐ๋Š” ์‚ฌ๋žŒ์€ ์ ˆ๋Œ€๋กœ ์ฝ์–ด์•ผ ํ•œ๋‹ค.'๋‹จ์ผ ์ฑ…์ž„ ์›์น™','ํ†ต์ผ ์ถ”์ƒ๋„'๋“ฑ ์•Œ๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ๋ฅผ ์“ฐ๋Š” ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ–ˆ๋‹ค.์ž์‹ ์˜ ์ฝ”๋“œ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์—๊ฒŒ ์‰ฝ๊ฒŒ ์ดํ•ด๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?๋‚˜๋Š”'1Q84'๋ฅผ ๋˜๋Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ์ž์ฃผ ๋‹ค์‹œ ์ฝ๋Š”๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์™€ ๊ฐ™์ด ๋จผ์ € ๋ณดํ˜ธ์ ˆ(return ๋ฐ˜ํ™˜)์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ผ์›Œ ๋„ฃ๋Š” ๊ฒƒ์„ ์–•๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ณ  ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฐ ๊ธฐ๊ต๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    judge_discounted_price.rb
    # ใ‚ใ‹ใ‚Šใฅใ‚‰ใ„
    def judge_discounted_price(person, price)
      if person[:member] == 1
        price = if person[:times] == 1
                  price * 0.9 - 1000
                else
                  price * 0.9
                end
      else
        price
      end
    end
    
    # ใ‚ใ‹ใ‚Šใ‚„ใ™ใ„
    def judge_discounted_price(person, price)
      return price if person[:member] != 1
    
      if person[:times] == 1
        price * 0.9 - 1000
      else
        price * 0.9
      end
    end
    
    ๋Œ€์ƒ์„ ์œ„ํ•œ ์„ค๊ณ„ ์‹ค์ฒœ ์ง€์นจ
    ์ด ์ฑ…์€ ๋งค์šฐ ๋‘๊บผ์›Œ์„œ ๋‚˜๋Š” ๋‘”๊ธฐ w๋ผ๊ณ  ํ†ต์นญํ•œ๋‹ค
    ๊ทธ๋ ‡๋‹ค๋ฉด ๋Œ€์ƒ์„ ํ–ฅํ•œ ์ƒ๊ฐ์€ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์˜ ์ƒ๊ฐ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.์ƒ์„ธํ•œ ์ƒํ™ฉ์„ ์•Œ๊ณ  ์‹ถ์€ ์‚ฌ๋žŒ์€ ์•„๋ž˜์˜ ๋ณด๋„๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
    โ— ์ดˆ๋ณด์ž๋ฅผ ์œ„ํ•œ ์ฒ ์ €ํ•œ ํ•ด์„ค!๋ฌด์—‡์ด ๋Œ€์ƒ์„ ํ–ฅํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ?
    ์ด ์ฑ…์„ ์ฝ๋Š” ์ด์œ ๋Š” ๋‘ ๊ฐ€์ง€๋‹ค.

  • ์—”์ง€๋‹ˆ์–ด์˜ ํ†ต์šฉ์–ด๋ฅผ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด
  • ๋ชจ๋“ˆ ์˜์กด, ๋‹จ์ผ ์ฑ…์ž„, ์˜ค๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค
  • ๋“ฑ์˜ ๊ฐœ๋…์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  • Ruby ๋“ฑ ๋Œ€์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์–ธ์–ด๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•œ ์ด์ƒ์ ์ธ ๋””์ž์ธ ๋ฐฉ๋ฒ•
  • ์ด์ƒ์ ์ธ ๋””์ž์ธ ๋ฐฉ๋ฒ•์€ ์–ธ์ œ, ์–ด๋–ค ์žฅ์†Œ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ์ด์ƒ์ ์ž…๋‹ˆ๊นŒ?
  • ์ด ์ฑ…์„ ์ฝ์€ ๋•๋ถ„์— ์—”์ง€๋‹ˆ์–ด๋“ค์˜ ํ™”์ œ๋ฅผ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋””์ž์ธํ•  ๋•Œ๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊นจ๋‹ซ๊ฒŒ ๋˜์—ˆ๋‹ค.
    ๋Œ€์ƒ์„ ์œ„ํ•œ ์žฌ์‚ฌ์šฉ ๋””์ž์ธ ๋ชจ๋ธ
    ๋ฐฐ์šฐ๋‹ค๋Œ€์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์–ธ์–ด์—์„œ ๋””์ž์ธ์„œ ๋ชฉ๋ก๊ณผ ์œ ์‚ฌํ•œ ์ธ์ƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
    ์ข€ ์ดํ•ด๊ฐ€ ์•ˆ ๊ฐ€๋Š” ๊ฒƒ ๊ฐ™์•„์„œ ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ ๋ชจ๋“œ๋ฅผ ์†Œ๊ฐœํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.
    Decorator.rb
    # Decoratorใƒ‘ใ‚ฟใƒผใƒณใ‚’ไฝฟ็”จใ—ใชใ„ไพ‹
    class User < ApplicationRecord
      def name_with_prefix
        prefix = gender == '็”ทๆ€ง' ? 'Mr.' : 'Ms.'
        name + prefix
      end
    end
    
    # Decoratorใƒ‘ใ‚ฟใƒผใƒณใ‚’ไฝฟ็”จใ—ใŸไพ‹
    class User < ApplicationRecord
    end
    
    class UserDecorator
      attr_reader :user
    
      def initialize(user)
        @user = user
      end
    
      def name_with_prefix
        prefix = @user.gender == '็”ทๆ€ง' ? 'Mr.' : 'Ms.'
        name + prefix
      end
    end
    
    Decorator ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ User ๋ชจ๋ธ์˜ ๋ฎ์–ด์“ฐ๊ธฐ ๋ฐ ์ €์žฅ์ด ๋ชจ๋‘ ์ˆ˜ํ–‰๋œ ์ƒํƒœ๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.๊ทธ ๊ฒฐ๊ณผ ์ดํ›„ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋œ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด ๋Œ€์ƒ์„ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๋ชฉ๋ก์„ ์œ ์—ฐํ•˜๊ฒŒ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ ๊ฐ™์€ ๊ฒƒ๋“ค์„ ๋งŽ์ด ์†Œ๊ฐœํ–ˆ๋‹ค.๊ทธ๋ž˜์„œ ์ด ์ฑ…์€ ๋Œ€์ƒ์„ ํ–ฅํ•œ ๋Š๋‚Œ์„ ์—ฐ๋งˆํ•˜๊ธฐ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ ์ฑ…์ด๋‹ค.
    ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋„๊ฐ๋„๋ฅผ ํ†ตํ•ด 26๊ฐ€์ง€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
    ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฐ”๋กœ'ํ”„๋กœ๊ทธ๋žจ๊ณผ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•'์ด๋‹ค.
    ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋ž€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
    ๊ณ„์‚ฐ๋ฒ•์ด๋ผ๋Š” ์ด๋ฆ„์ด ์ •๋ง ๋Œ€๋‹จํ•˜๋„ค์š”...
    ๊ทธ๋Ÿฌ๋‚˜ ์ด ์ฑ…์€ ์ˆ˜์กฐ, ์ฐฝ๊ณ  ๋“ฑ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ถ€ํ„ฐ ์ •๋ ฌ, ํƒ์ƒ‰ ๋ฐฉ๋ฒ• ๋“ฑ์„ ๋„ํ•ด๋กœ ์„ค๋ช…ํ•œ๋‹ค.
    ์˜ˆ๋ฅผ ๋“ค์–ด ์•„๋ž˜์˜ ๊ธฐ์ˆ ์„ ๋ณด์‹ญ์‹œ์˜ค.
    ๊ฐ’์„ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ์„œ ์„ ํ˜• ํƒ์ƒ‰๊ณผ ์ด๋ถ„ ํƒ์ƒ‰์ด ์žˆ๋‹ค.๊ธฐ์ˆ ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๊ด€ํ•ด์„œ๋Š” ์„ ํ˜• ๊ฒ€์ƒ‰์ด ๋น„๊ต์  ๊ฐ„๋‹จํ•˜์ง€๋งŒ, ์ผ์น˜ํ•˜๋Š” ์ˆซ์ž๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ณ„์‚ฐ๋Ÿ‰์ด ๋งŽ์•„์ง„๋‹ค.
    ๊ทธ๋Ÿฌ๋‚˜ ์ด๋ถ„ํƒ์ƒ‰๊ณผ ๊ฐ™์€ ์ฐพ๊ธฐ ๋ฐฉ๋ฒ•์ด๋ผ๋ฉด ์ „๋ถ€๋ฅผ ๋น„๊ตํ•  ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์„ ํ˜• ํƒ์ƒ‰๋ณด๋‹ค ๊ณ„์‚ฐ๋Ÿ‰์ด ์ ๋‹ค.๋‚˜๋Š” ์ด๋Ÿฌํ•œ ์ ˆ์ฐจ์™€ ๊ณ„์‚ฐ ๋ฐฉ๋ฒ•์„ ๊ธฐ์ดˆ ์ง€์‹์œผ๋กœ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ์—”์ง€๋‹ˆ์–ด๋กœ์„œ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
    binary_search.rb
    # ็ทšๅฝขๆŽข็ดข
    def linear_search(array, target)
      array.each.with_index(1) do |num, index|
        if num == target
          puts "ๆŽขใ—ใฆใ„ใ‚‹ๅ€คใฏ#{index}็•ช็›ฎใซใ‚ใ‚Šใพใ™"
          return
        end
      end
      puts "#{target}ใฏ่ฆ‹ใคใ‹ใ‚Šใพใ›ใ‚“ใงใ—ใŸ"
    end
    
    array = [14, 32, 45, 67, 89, 122, 245, 367]
    puts 'ๆŽข็ดขใ—ใŸใ„ๅ€คใ‚’ไปฅไธ‹ใ‹ใ‚‰้ธใ‚“ใงใ€ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„'
    puts array.join(' , ')
    target = gets.to_i
    linear_search(array, target)
    
    # ไบŒๅˆ†ๆŽข็ดข
    def binary_search(array, target)
      head = 0
      tail = array.length - 1
      while head <= tail
        center = (head + tail) / 2
        if array[center] == target
          puts "#{target}ใฏ#{center + 1}็•ช็›ฎใซใ‚ใ‚Šใพใ—ใŸ"
          return
        elsif array[center] < target
          head = center + 1
        else
          tail = center - 1
        end
      end
    end
    
    array = [14, 32, 45, 67, 89, 122, 245, 367]
    puts 'ๆŽข็ดขใ—ใŸใ„ๅ€คใ‚’ไปฅไธ‹ใ‹ใ‚‰้ธใ‚“ใงใ€ๅ…ฅๅŠ›ใ—ใฆใใ ใ•ใ„'
    puts array.join(' , ')
    target = gets.to_i
    binary_search(array, target)
    
    ์ด์ƒ์€ ๋‚ด๊ฐ€ ์ฝ์€ ์ฑ…์ด๋‹ค.
    3. ์—ฐ๋งˆ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•˜๋Š”'์‚ฌ๊ณ ๋ฐฉ์‹'
    ๋ˆˆ์•ž์˜ ๋‹ต์„ ์ฐพ๋Š” ๊ฒƒ๋„ ์˜๋ฏธ๊ฐ€ ์—†๋‹ค.

    ๋‹จ์ˆœํžˆ ์ •๋‹ต๊ณผ ์ตœ์ข… ์„ฑ๊ณผ๋งŒ์„ ์ถ”๊ตฌํ•œ๋‹ค๋ฉด ๋‹จ๊ธฐ์ ์œผ๋กœ๋Š” ์ข‹์ง€๋งŒ ์žฅ๊ธฐ์ ์œผ๋กœ๋Š” ์ข‹์ง€ ์•Š๋‹ค๊ณ  ๋ณธ๋‹ค.๊ธฐ์ดˆ๊ฐ€ ๋˜๋Š”'์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ์‚ฌ๊ณ ๋ฐฉ์‹'์ด๋ผ๋Š” ๋ถ€๋ถ„์—์„œ ๋” ์ •๊ตํ•ด์ง€๋ ค๋ฉด ์–ด๋–ค ์ž๋ฆฌ์—์„œ๋“  ์ž๋ ฅ๊ฐฑ์ƒ์ ์œผ๋กœ ์‚ฌ๊ณ ํ•˜๊ณ  ๋๊นŒ์ง€ ํ•ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.์žฅ๊ธฐ์ ์œผ๋กœ ๋ณด๋ฉด, ๋‚˜๋Š” ์ด๋Ÿฐ ํ–‰์œ„ ๋ฐฉ์‹์ด ์ข‹์€ ์ ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
    ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ๊นจ๋‹ซ๋Š” ์ผ์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.
  • ์„ ๋ฐฐ ์—”์ง€๋‹ˆ์–ด์—๊ฒŒ ์ผ์„ ๋ฌผ์–ด๋ณผ ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ์ž์‹ ์˜'๊ฐ€์ •','์‹œ๋„ํ•œ ์ผ'์„ ์ „๋‹ฌํ•ด์•ผ ํ•œ๋‹ค.๊ฐ€๋Šฅํ•œ ํ•œ ๊ต์žฌ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ž์‹ ์˜ ์ƒ๊ฐ์„ ์ด๊ฒฐํ•˜๋‹ค.
  • ์ด์œ : ์ž์‹ ์˜ ์ƒ๊ฐ๊ณผ ํ–‰๋™์ด FB
  • ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด

  • ๋‹ค๋ฅธ ์—”์ง€๋‹ˆ์–ด์˜ ์„ค์น˜, ์„ค๊ณ„ ๋ฐฐ๊ฒฝ๊ณผ ์ด์œ ๋ฅผ ๋ฐ˜๋“œ์‹œ ๋ฌผ์–ด์•ผ ํ•œ๋‹ค.
  • ์ด์œ : ์ž์‹ ๋ณด๋‹ค ๊ฒฝํ—˜์ด ๋งŽ์€ ์‚ฌ๋žŒ์˜ ์‚ฌ๊ณ  ํšŒ๋กœ๋ฅผ ๋ฐ•ํƒˆํ•˜๊ณ  ์ž์‹ ์˜ ์ƒ๊ฐ์„ ์—ฐ๋งˆํ•œ๋‹ค.
  • 4-์–ด์จŒ๋“  ๊ฐœ๋ฐœ๋Ÿ‰์„ ๋Š˜๋ ค์•ผ ํ•œ๋‹ค
    ๋ถ€์—…์€ ์ž์‹ ์˜ ๊ธฐ์ˆ ์„ ํ™•์žฅํ•˜๊ณ  ๊ฒฝํ—˜์„ ๋Š˜๋ฆฌ๋Š” ๋„๊ตฌ์ด๋‹ค
    ์ด๊ฒƒ์€ ๋‚˜์˜ ์™„์ „ํžˆ ์ผ๊ด€๋œ ์ฃผ์žฅ์ธ๋ฐ, ๊ฒฐ๊ณผ๋Š”'๊ฒฝํ—˜์˜ ์–‘'์ด๋‹ค.ร—๋‚˜๋Š” FB์˜ ์–‘์ด ์ฃผ์œ„ ์‚ฌ๋žŒ๋“ค๊ณผ ์ฐจ์ด๊ฐ€ ์žˆ๋Š”์ง€ ๊ณ ๋ คํ•˜๊ณ  ์žˆ๋‹ค.๋‚˜๋Š” ์Šค๋ฌผ์—ฌ์„ฏ ์‚ด ๋•Œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋๊ณ  ํŠน๋ณ„ํ•œ ์—”์ง€๋‹ˆ์–ด๋กœ์„œ์˜ ๋Š๋‚Œ์ด ์—†์–ด์„œ ์ฃผ์œ„๋ณด๋‹ค ๋ช‡ ๋ฐฐ๋‚˜ ๋น ๋ฅธ ์†๋„๋กœ ๊ฒฝํ—˜์„ ์Œ“๊ณ  ์‹ถ์—ˆ๋‹ค.
    ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋ถ€์—… ๊ฐœ๋ฐœ์„ ํ†ตํ•ด ๋Šฅ๋ ฅ์„ ์žฅ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.
    << ์ถœ๋ ฅ ์ž…๋ ฅ
    ์ž…๋ ฅ์ด ๋‚˜์œ ํŽธ์€ ์•„๋‹ˆ๋‹ค.ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ํ˜„์žฅ ์‹ค์ „ ์ˆ˜๊ฐ€ ๋งŽ์„์ˆ˜๋ก ๊ฐ•๋ ฅํ•œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค."์‹ค์ „์—์„œ ์ง€์‹์ด ๋ถ€์กฑํ•˜๋ฉด ๊ฑฐ๊ธฐ์„œ ์ž…๋ ฅํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค"๋ฉฐ ์ˆ˜์ถœ ํ™˜๊ฒฝ์„ ์–ด๋–ป๊ฒŒ ๋Š˜๋ฆฌ๋Š๋ƒ์— ์ดˆ์ ์„ ๋งž์ท„๋‹ค.
    5 - ์š”์•ฝ
    ์ทจํ•ฉ์— ๋“ค์–ด๊ฐ€๋‹ค.์ž์‹ ์ด ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋  ๊ฒฝํ—˜์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ์„ ํƒ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
  • WEB ์—”์ง€๋‹ˆ์–ด์˜ ๊ธฐ์ดˆ ์ง€์‹ ์ฃผ์ž…
  • ์—ฐ๋งˆ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•˜๋Š”'์‚ฌ๊ณ ๋ฐฉ์‹'
  • ๋ถ€์—… ๋“ฑ์„ ํ†ตํ•ด ๊ฐœ๋ฐœ๋Ÿ‰ ์ฆ๊ฐ€
  • ์กฐ๊ธˆ๋งŒ ์ฐธ๊ณ ํ•ด์ฃผ์…จ์œผ๋ฉด ์ข‹๊ฒ ์–ด์š”, ์ œ๋ฐœ!
    ๋‚ด์ผ์€ @kazuis์”จ์˜ 5๋‹จ๊ณ„ ๋ชจ๋ธ์˜ ์‹œ์Šคํ…œ ์„ค๊ณ„ ์ถ”์ง„ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค!

    ์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ