์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค
๊ฐœ๋ฐœ์„œ์ /์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ

Chapter 1. ๊ฐ์ฒด, ์„ค๊ณ„

๊ฐœ๋ฐœ์„œ์ /์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ

Chapter 1. ๊ฐ์ฒด, ์„ค๊ณ„

2023. 9. 25. 20:49

์กฐ์˜ํ˜ธ๋‹˜์˜ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ฝ๊ณ  ์ œ ๋จธ๋ฆฟ์†์— ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ์ •๋ฆฌํ•˜๋ฉฐ ์ž‘์„ฑํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค.

 


๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•œ ์ฝ”๋“œ

public class Theater {
    private TicketSeller ticketSeller;

    public Theater(TicketSeller ticketSeller) {
        this.ticketSeller = ticketSeller;
    }

    public void enter(Audience audience) {
    	// ๊ด€๋žŒ๊ฐ ๊ฐ€๋ฐฉ์— ์ดˆ๋Œ€๊ถŒ์ด ์žˆ๋‹ค๋ฉด?
        if (audience.getBag().hasInvitation()) {
            Ticket ticket = ticketSeller.getTicketOffice().getTicket();
            // ํ‹ฐ์ผ“ ์ œ๊ณต
            audience.getBag().setTicket(ticket);
            
        // ์ดˆ๋Œ€๊ถŒ์ด ์—†๋‹ค๋ฉด
        } else {
            Ticket ticket = ticketSeller.getTicketOffice().getTicket();
            
            // ๊ด€๋žŒ๊ฐ์ด ๊ฐ–๊ณ  ์žˆ๋Š” ํ˜„๊ธˆ(amount)๋ฅผ ๋ฐ›์•„ ํ‹ฐ์ผ“ ๊ตํ™˜
            audience.getBag().minusAmount(ticket.getFee());
            ticketSeller.getTicketOffice().plusAmount(ticket.getFee());
            audience.getBag().setTicket(ticket);
        }
    }
}

์œ„ ์ฝ”๋“œ๋Š” ๊ด€๋žŒ๊ฐ์˜ ๊ฐ€๋ฐฉ์— ์ดˆ๋Œ€์žฅ์ด ์žˆ์œผ๋ฉด ํ‹ฐ์ผ“์„ ๊ตํ™˜ํ•˜์—ฌ ๊ด€๋žŒ๊ฐ์—๊ฒŒ ์ฃผ๊ณ , ์ดˆ๋Œ€์žฅ์ด ์—†๋‹ค๋ฉด ๊ด€๋žŒ๊ฐ์˜ ๊ฐ€๋ฐฉ์•ˆ์— ์žˆ๋Š” ํ˜„๊ธˆ์œผ๋กœ ํ‹ฐ์ผ“์„ ๊ตฌ๋งคํ•œ ๋’ค ํ‹ฐ์ผ“์„ ์ฃผ๋Š” ์ฝ”๋“œ์ด๋‹ค.

 

์ด ์ฝ”๋“œ์˜ ๋ฌธ์ œ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ํ‹ฐ์ผ“ ํŒ๋งค์›๊ณผ ๊ด€๋žŒ๊ฐ๊ฐ„์˜ ํ˜‘๋ ฅ๊ณผ์ •์„ Theater๊ฐ€ ์ฃผ๋„ํ•˜๊ณ  ๊ฐ์‹œํ•œ๋‹ค.
  2. ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋„ˆ๋ฌด ๋†’์•„์„œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ํž˜๋“ค๊ณ  Audience๋‚˜ TicketSeller ์— ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ Theater ์ฝ”๋“œ๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค.

    Audience๊ฐ€ Bag ํด๋ž˜์Šค๊ฐ€ ์—†์–ด์ง„๋‹ค๋ฉด? ํ˜„๊ธˆ(amount)์ด ์•„๋‹Œ ์‹ ์šฉ์นด๋“œ ๊ฒฐ์ œ๋„ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด? ๋“ฑ๋“ฑ์˜ ๋ณ€ํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Theater ์ฝ”๋“œ๋„ ์ˆ˜์ •ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ๐Ÿ’ก ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ์˜์กด์„ฑ๋งŒ ์œ ์ง€ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.

 

๊ทธ๋ฆฌ๊ณ  ๐Ÿ’ก ์บก์Аํ™”๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

 

Theater๋Š” Audience ๊ฐ์ฒด์˜ Bag ๊ฐ์ฒด์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ TicketSeller์˜ TicketOffice์—๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์„ private ์ œ์–ด์ž๋ฅผ ํ†ตํ•ด ์ž์‹ ์ด ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋Š” ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ๊ฐ์ฒด๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

 

1๏ธโƒฃ ์บก์Аํ™”๋ฅผ ํ†ตํ•œ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ

public class Theater {
    private TicketSeller ticketSeller;

    public Theater(TicketSeller ticketSeller) {
        this.ticketSeller = ticketSeller;
    }

    public void enter(Audience audience) {
        ticketSeller.sellTo(audience);
    }
}

 

๋ณ€๊ฒฝ๋œ ์ฝ”๋“œ๋Š” ์œ„์™€ ๊ฐ™๋‹ค.

 

Theater๋Š” ๊ด€๋žŒ๊ฐ์˜ ๊ฐ€๋ฐฉ์— ๋ฌด์—‡์ด ์žˆ๋Š”์ง€, ์ดˆ๋Œ€๊ถŒ์„ ๊ตํ™˜ํ•˜๋Š”์ง€ ๋“ฑ๋“ฑ์„ ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

 

ํŒ๋งค์›์ด ๊ด€๋žŒ๊ฐ์—๊ฒŒ ์–ด๋– ํ•œ ํ˜•ํƒœ๋กœ๋“  ํ‹ฐ์ผ“์„ ํŒ๋งคํ–ˆ์œผ๋ฉด ์ž…์žฅ์‹œ์ผœ์ฃผ๋Š” ์—ญํ• ๋งŒ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

 

์ด์ „ ์ฝ”๋“œ์—๋Š” Bag TicketOffice Ticket amount fee ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด์™€ ๋ณ€์ˆ˜์™€ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์—ˆ์ง€๋งŒ,

 

์ˆ˜์ •๋œ ์ฝ”๋“œ์—์„œ๋Š” ๊ฒฐํ•ฉ๋„๊ฐ€ ๋งŽ์ด ๋‚ฎ์•„์กŒ์Œ์„ ํ•œ๋ˆˆ์— ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

public class TicketSeller {
    private TicketOffice ticketOffice;

    public TicketSeller(TicketOffice ticketOffice) {
        this.ticketOffice = ticketOffice;
    }

    public void sellTo(Audience audience) {
        if (audience.getBag().hasInvitation()) {
            Ticket ticket = this.getTicketOffice().getTicket();
            audience.getBag().setTicket(ticket);
        } else {
            Ticket ticket = this.getTicketOffice().getTicket();
            audience.getBag().minusAmount(ticket.getFee());
            this.getTicketOffice().plusAmount(ticket.getFee());
            audience.getBag().setTicket(ticket);
        }
    }
}

 

ํ‹ฐ์ผ“์„ ํŒ๋งคํ•˜๋Š” ์—ญํ• ์€ ํŒ๋งค์›๊ณผ ๊ด€๋žŒ๊ฐ ์‚ฌ์ด์—์„œ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์—

 

TicketSeller์•ˆ์— ๋ฉ”์„œ๋“œ๋กœ์„œ ์ถ”๊ฐ€ํ•ด์ฃผ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๋‹ค๋งŒ, ์œ„ ์ฝ”๋“œ ์—ญ์‹œ TicketSeller๊ฐ€ Audience์˜ Bag์— ์ ‘๊ทผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ๋” ์บก์Аํ™”๋ฅผ ํ†ตํ•ด ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค.

 

 

public class Audience {
    private Bag bag;

    public Audience(Bag bag) {
        this.bag = bag;
    }

    public Long buy(Ticket ticket) {
        if (bag.hasInvitation()) {
            bag.setTicket(ticket);
            return 0L;
        } else {
            bag.setTicket(ticket);
            bag.minusAmount(ticket.getFee());
            return ticket.getFee();
        }
    }

}

์ด์ œ ๊ด€๋žŒ๊ฐ์ด ์Šค์Šค๋กœ ์ž์‹ ์˜ Bag์™€ ๋ฉ”์„ธ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์ฃผ์ฒด๊ฐ€ ๋˜์—ˆ๋‹ค.

 

public class TicketSeller {
    private TicketOffice ticketOffice;

    public TicketSeller(TicketOffice ticketOffice) {
        this.ticketOffice = ticketOffice;
    }

    public void sellTo(Audience audience) {
        ticketOffice.plusAmount(audience.buy(ticketOffice.getTicket()));
    }
}

๊ทธ๋ฆฌ๊ณ  ํŒ๋งค์›์€ ๊ด€๋žŒ๊ฐ์ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํ‹ฐ์ผ“์„ ์ƒ€๋Š”์ง€๋Š” ์ค‘์š”ํ•˜์ง€ ์•Š๊ณ  ํ‹ฐ์ผ“์„ ๊ฑฐ๋ž˜ํ•˜๊ณ  ๋‚˜์„œ์˜ ๊ฒฐ๊ณผ๋ฌผ ๋งŒ์„ ์ƒ๊ฐํ•˜๋Š” ์ฝ”๋“œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋‹ค.

 

TicketSeller๋Š” TicketOffice์˜ ํ•„๋“œ์ธ Ticket์„ ๋งˆ์Œ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์š”์ฒญํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด์ž.

 

public class TicketOffice {
    private Long amount;
    private List<Ticket> tickets = new ArrayList<>();

	...
    
    public void sellTicketTo(Audience audience) {
        plusAmount(audience.buy(getTicket()));
    }
}

TicketOffice๋Š” ์ž์‹ ์˜ ticket์€ ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

 

๐Ÿšจ ๋Œ€์‹ , TicketOffice๋Š” Audience๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์ถ”๊ฐ€์ ์œผ๋กœ ์˜์กดํ•˜๊ฒŒ ๋˜๊ธด ํ–ˆ๋‹ค.

 

public class TicketSeller {
    private TicketOffice ticketOffice;

    public TicketSeller(TicketOffice ticketOffice) {
        this.ticketOffice = ticketOffice;
    }

    public void sellTo(Audience audience) {
        ticketOffice.sellTicketTo(audience);
    }
}

TicketSeller๋Š” TicketOffice์—๊ฒŒ ํ‹ฐ์ผ“์„ ๊ด€๋žŒ๊ฐ์—๊ฒŒ ํŒ”๊ฒƒ์„ ์š”์ฒญํ•œ๋‹ค.

 

 

์ด์ œ Audience๊ฐ€ Bag์˜ ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ง๊ณ , Bag์—๊ฒŒ ์š”์ฒญ์„ ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•œ๋ฒˆ ๋” ๋ฆฌํŒฉํ† ๋ง ํ•ด๋ณด์ž.

public class Bag {
    private Long amount;
    private Invitation invitation;
    private Ticket ticket;

    public Bag(long amount) {
        this(null, amount);
    }

    public Bag(Invitation invitation, long amount) {
        this.invitation = invitation;
        this.amount = amount;
    }

    public Long hold(Ticket ticket) {
        if (hasInvitation()) {
            setTicket(ticket);
            return 0L;
        } else {
            setTicket(ticket);
            minusAmount(ticket.getFee());
            return ticket.getFee();
        }
    }

    private boolean hasInvitation() {
        return invitation != null;
    }

    public boolean hasTicket() {
        return ticket != null;
    }

    private void setTicket(Ticket ticket) {
        this.ticket = ticket;
    }

    private void minusAmount(Long amount) {
        this.amount -= amount;
    }

    private void plusAmount(Long amount) {
        this.amount += amount;
    }
}

์ด์ œ Bag์ด ์ž์‹ ์˜ ํ•„๋“œ๋Š” ์ž์‹ ์ด ๊ด€๋ฆฌํ•˜๊ฒŒ๋” ๋˜์—ˆ๋‹ค.

 

public class Audience {
    private Bag bag;

    public Audience(Bag bag) {
        this.bag = bag;
    }

    public Long buy(Ticket ticket) {
        return bag.hold(ticket);
    }

}

๊ด€๋žŒ๊ฐ์€ Bag ๊ฐ์ฒด์—๊ฒŒ ํ‹ฐ์ผ“์„ ๊ฐ–๊ณ  ์žˆ์„ ๊ฒƒ์„ ์š”์ฒญํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค.

 

 

๐Ÿ’ก ์ด์ œ ๊ด€๋žŒ๊ฐ์ด ๊ฐ€๋ฐฉ์—์„œ ์ง€๊ฐ‘์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋“ , ๋น„๋‹๋ด‰์ง€๋กœ ๋ฐ”๋€Œ์—ˆ๋“  TicketSeller๋Š” ์‹ ๊ฒฝ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

 

๊ฐ์ฒด ์ž์‹ ๊ณผ ๊นŠ๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ๋Š” ๊ฐ์ฒด๋Š”, ์ œ 3์ž ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ ์Šค์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๊ฒŒ๋” ์ƒ๊ฐํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ๋ฆฌํŒฉํ† ๋ง์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ด์™€ ๊ฐ™์ด ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋˜์–ด ์žˆ๋Š” ์ž‘์—…์„ ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์‘์ง‘๋„๊ฐ€ ๋†’๋‹ค๊ณ  ๋งํ•œ๋‹ค.

 

์ฆ‰, ๊ฐ์ฒด๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๊ณ  ์‘์ง‘๋„๋ฅผ ๋†’์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ฐœ์„ ์‹œํ‚จ ๊ฒƒ์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

 

ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ์ฑ…์ž„์„ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” SOLID์˜ SRP ์™€ 

 

๋ณ€ํ™”์—๋Š” ๋‹ซํ˜€์žˆ๊ณ  ํ™•์žฅ์—๋Š” ์—ด๋ ค์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” OCP ๋ฒ•์น™์„ ์ง€ํ‚ค๊ฒŒ๋” ๊ฐœ์„ ํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐ์ด๋“ ๋‹ค.

 

๊ฐ์ฒด ์ง€ํ–ฅ์˜ ๋Œ€์ฒ™์ ์— ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋Š” ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์˜์กดํ•ด์•ผํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ณ€ํ™”์— ๋งค์šฐ ์ทจ์•ฝํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋ฐ˜๋ฉด์—, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ๐Ÿ’ก ์บก์Аํ™”๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถค์œผ๋กœ์„œ ๋ณ€ํ™”์— ์œ ์—ฐํ•˜๊ณ  ์˜ํ–ฅ๋ ฅ์ด ๋„“๊ฒŒ ์ „ํŒŒ๋˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

๐Ÿšจ ๋ฆฌํŒฉํ† ๋ง ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜์กด์„ฑ์ด ์—†๋˜ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๊ฒฐํ•ฉ๋„ ์ƒ๊ธด ๊ฒฝ์šฐ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ, ๋ชจ๋“  ๊ฐ์ฒด๊ฐ„์˜ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ณ  ์–ด๋–ค ๊ฒฐํ•ฉ์ด ๋” ์œ ์šฉํ•œ์ง€ ํŒ๋‹จํ•ด์„œ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฐœ๋ฐœ์ž์˜ ๋ชซ์ด ๋œ๋‹ค.

 

  • ๋ณ€๊ฒฝ์— ์ทจ์•ฝํ•œ ์ฝ”๋“œ
  • 1๏ธโƒฃ ์บก์Аํ™”๋ฅผ ํ†ตํ•œ ๊ฒฐํ•ฉ๋„ ๊ฐ์†Œ
'๊ฐœ๋ฐœ์„œ์ /์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • Chapter 5. ์ฑ…์ž„ ํ• ๋‹นํ•˜๊ธฐ
  • Chapter 4. ์„ค๊ณ„ ํ’ˆ์งˆ๊ณผ ํŠธ๋ ˆ์ด๋“œ์˜คํ”„
  • Chapter 3. ์—ญํ• , ์ฑ…์ž„, ํ˜‘๋ ฅ
  • Chapter 2. ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์šฐ๊ทœ์ด์ธ์šฐ์œค
๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.