Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Swift/Swift BASIC

[Swift] ๊ธฐ์ดˆ ๋ฌธ๋ฒ• - ์˜ต์…”๋„ ์ฒด์ด๋‹ (Optional Chaining) (ํ•จ์ˆ˜์™€ ๋”•์…”๋„ˆ๋ฆฌ-()?, []?, ?()?, ?[]?)

๊ฐ์ž ๐Ÿฅ” 2022. 1. 20. 20:25
๋ฐ˜์‘ํ˜•

์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์ž์ž…๋‹ˆ๋‹ค! ์˜ค๋Š˜์€ ์˜ต์…”๋„ ์ฒด์ด๋‹์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ด…์‹œ๋‹ค.
๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค 30๊ฐœ ํ”„๋กœ์ ํŠธ๋กœ ๋ฐฐ์šฐ๋Š” iOS์•ฑ ๊ฐœ๋ฐœ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ์ž‘์„ฑํ•œ ํฌ์ŠคํŒ…์ž…๋‹ˆ๋‹ค :)


 

์˜ต์…”๋„ ์ฒด์ด๋‹(Optional Chaning) ์ด๋ž€?

chaining์ด๋ผ๋Š” ๊ฒƒ์€ ์—ฐ์‡„๋ผ๋Š” ๋œป์œผ๋กœ, ์˜ต์…”๋„์„ ์—ฐ์‡„์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. (์˜ต์…”๋„ ๊ฐœ๋…) ๊ธฐ๋ณธ์ ์ธ ํ˜•ํƒœ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

person.contacts?.address
person?.contacts?.address

์ด์ œ ๊ฐœ๋ฐœ์„ ํ•˜๊ฒŒ ๋˜๋ฉด, ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋ฅผ ๋งŽ์ด ๋ณด๊ฒŒ ๋ ํ…๋ฐ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•˜๊ณ  ๋„˜์–ด๊ฐ€๋ณด๋„๋ก ํ•˜์ž :)

์˜จ์ (.) ์„ ํ†ตํ•ด ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ์— ์—ฐ์†์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ฒŒ ๋  ๋•Œ, ์˜ต์…”๋„ ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ ๊ปด ์žˆ๋‹ค๋ฉด, ์˜ต์…”๋„ ์ฒด์ด๋‹์ด๋‹ค. ์ด๊ฒƒ์ด ๋ฌด์Šจ๋ง์ด๋ƒ, 

person.contact.address

์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์˜ต์…”๋„์ด ํ•˜๋‚˜๋ผ๋„ ๊ปด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ ๋˜์–ด์žˆ๋‹ค๋ฉด ์ € ์„ธ๊ฐœ๋Š” ์˜ต์…”๋„์ด ์•„๋‹ˆ๋ž€ ๋ง์ด๋‹ค.

์ž ๊ทธ๋Ÿผ, ์ด์ œ ์˜ต์…”๋„ ์ฒด์ด๋‹์— ๋Œ€ํ•ด์„œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž. (์†Œ๋“ค๋‹˜ ํ‹ฐ์Šคํ† ๋ฆฌ ๋ธ”๋กœ๊ทธ ์ฐธ๊ณ ! ์ •๋ฆฌ ์ •๋ง ์ž˜๋˜์–ด์žˆ์–ด์š”. ํ•œ๋ฒˆ์”ฉ ๋ณด์„ธ์š”!)

 

โ–ถ ์˜ˆ์ œ๋กœ ์‚ดํŽด๋ณด๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์ฒด๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์˜ต์…”๋„ person ํƒ€์ž…์ธ potato๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋ณด์ž.

struct Contacts {
	var email: String
    var address: [String: Stirng]
}

struct Person {
	var name: String
    var contacts: Contacts
    
    init(name: String, email: String, address: String) {
    	self.name = name
        contacts = Contacts(email: email, address: ["home": address])
	}
}

var potato: Person? = Person(name: "potatoPotato", email:"potato@1234", address: "Seoul")

์ด๋ ‡๊ฒŒ potato๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ๋‹ค. ๊ทธ๋Ÿฌ๊ณ  ์ด์ œ potato.contacts.email์— ์ ‘๊ทผํ•ด๋ณด์ž.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. ๊ทธ ์ด์œ ๋Š”, potato๊ฐ€ ์˜ต์…”๋„ ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ? ๋ฅผ ์จ์ฃผ์–ด์•ผํ•œ๋‹ค. ใ…Žใ…Ž ๊ทผ๋ฐ ์‚ฌ์‹ค xcode์—์„œ ์ž๋™์œผ๋กœ ? ๋ฅผ ์จ์ฃผ๋Š”๋ฐ ์ผ๋ถ€๋Ÿฌ ์–ด๋–ป๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋Š”์ง€ ์ง€์›Œ๋ณด์•˜๋‹ค ใ…Žใ…Ž

์ด๋ ‡๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ์— potato?.contacts.email์ด nil ๊ฐ’์ด๋ฉด, nil์ด ์ถœ๋ ฅ๋œ๋‹ค. (potato, contacts, email ์…‹ ์ค‘ ํ•˜๋‚˜๋ผ๋„ nil์ธ ๊ฒฝ์šฐ๋ฉด, ๋ฌด์กฐ๊ฑด nil์„ ์ถœ๋ ฅํ•œ๋‹ค.)

 

โ–ถ ์˜ต์…”๋„ ์ฒด์ด๋‹์˜ ํŠน์ง•์„ ์•Œ์•„๋ณด์ž.

ํŠน์ง•1. ์˜ต์…”๋„ ์ฒด์ด๋‹์˜ ๊ฒฐ๊ณผ๊ฐ’์˜ ํƒ€์ž…์€ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์˜ ์˜ต์…”๋„ ํƒ€์ž…์ด๋‹ค.

์•ž์„œ ์‚ฌ์šฉํ–ˆ๋˜ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง€๊ณ  type์„ ์‚ดํŽด๋ณด์ž.

์˜ต์…”๋„ ์ฒด์ด๋‹๋œ ๋ณ€์ˆ˜ e๋Š” ๋งˆ์ง€๋ง‰์— ์žˆ๋Š” email์˜ ํƒ€์ž…์„ ์˜ต์…”๋„๋กœ ๊ฐ€์ ธ๊ฐ„๋‹ค.  ์ฆ‰ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œ๋กœ ์ •๋ฆฌํ•ด๋ณด๋ฉด,

ํ‘œํ˜„์‹ ํƒ€์ž…
e Optional<String>
potato Person
contacts Contacts
email String

์ฆ‰ ์˜ต์…”๋„ ์ฒด์ด๋‹์œผ๋กœ ์„ ์–ธ๋œ ์ƒ์ˆ˜ e๋Š” ๋งˆ์ง€๋ง‰ email์˜ ํƒ€์ž…์ธ string ์„ ์˜ต์…”๋„๋กœ ๊ฐ์‹ธ์ง„ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ ธ๊ฐ„๋‹ค. 

 

ํŠน์ง•2. ์˜ต์…”๋„ ์ฒด์ด๋‹์˜ ๋งˆ์ง€๋ง‰ ํ‘œํ˜„์‹์€ ์˜ต์…”๋„์ด๋”๋ผ๋„ ? ๋ฅผ ์ƒ๋žตํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ์ฒด2 ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค. email์„ ์˜ต์…”๋„ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ๊ณ , e2๋ฅผ ์„ ์–ธํ•ด๋ณด์•˜๋Š”๋ฐ, ๋งˆ์ง€๋ง‰์—๋Š” ์˜ต์…”๋„ ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹น์—ฐํžˆ ? ๋ฅผ ๋ถ™์—ฌ์•ผํ•˜์ง€์•Š๋Š”๊ฐ€? ํ•˜์ง€๋งŒ, ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. ๋งˆ์ง€๋ง‰์€ ๋ฌด์กฐ๊ฑด ?๋ฅผ ์ƒ๋žตํ•ด์ฃผ์ž.

ํŠน์ง•3. ์˜ต์…”๋„ ์ฒด์ด๋‹์˜ ํ‘œํ˜„์‹ ์ค‘ ํ•˜๋‚˜๋ผ๋„ nil๊ฐ’์„ ๊ฐ€์ง„๋‹ค๋ฉด, ์ด์–ด์ง€๋Š” ํ‘œํ˜„์‹์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ nil์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

potato๋ฅผ nil๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ณ , e3 ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ–ˆ๋‹ค. ๋งจ์•ž์—์žˆ๋Š” potato๊ฐ€ nil์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋’ค์— ์žˆ๋Š” ํ‘œํ˜„์‹์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ ๊ทธ๋ƒฅ nil์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

โ–ถ ํ•จ์ˆ˜์™€ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹

์˜ต์…”๋„ ์ฒด์ด๋‹์—์„œ ํ•จ์ˆ˜๊ฐ€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์•Œ์•„๋ณด์ž.

1) function()? 

์ด ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด ์œ„์—์„œ ๋งŒ๋“ค์–ด๋†จ๋˜ Person๊ตฌ์กฐ์ฒด์— ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

struct Person2 {
    var name: String
    var contacts: Contacts
    
    init(name: String, email: String, address: String) {
        self.name = name
        contacts = Contacts(email: email, address: ["home": address])
    }
    func getContacts() -> Contacts? {
        return contacts
    }
}

์ด Person๊ตฌ์กฐ์ฒด์— getContacts๋ผ๋Š” ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ์–ป์€ contacts์˜ email๊ฐ’์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ๋ฉด๋œ๋‹ค.

potato?.getContacts()?.email

๊ทธ๋Ÿผ ๊ตณ์ด ํ•จ์ˆ˜ ๋’ค์— ์™œ ? ๋ฅผ ๋ถ™์˜€๋Š”๊ฐ€? ๋ฐ”๋กœ , ํ•ด๋‹น ํ•จ์ˆ˜์—์„œ ๋ฆฌํ„ด๊ฐ’์œผ๋กœ ๋ฐ›๋Š” Contacts๊ฐ€ ์˜ต์…”๋„์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋‹ˆ๊นŒ!! ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ด ์˜ต์…”๋„์ด๋ฉด ?๋ฅผ ํ•จ์ˆ˜ ๋’ค์— ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

์ •๋ฆฌํ•˜์ž๋ฉด, ํ•จ์ˆ˜() ๋’ค์— ? ๊ฐ€ ๋ถ™๋Š” ๊ฒฝ์šฐ๋Š” ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด ๊ฐ’์˜ ์†์„ฑ์— ์ ‘๊ทผํ•  ๋•Œ ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

 

2) function?()

๋ฐ˜๋Œ€๋กœ ?() ์˜ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š”, ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ด ์˜ต์…”๋„์ด ์•„๋‹๋•Œ!! ์ด์ฒ˜๋Ÿผ ์ž‘์„ฑํ•œ๋‹ค.

func getContacts() -> Contacts {
    return contacts
}

๋งŒ์•ฝ ์œ„ ์ฝ”๋“œ์ฒ˜๋Ÿผ, Person ๊ตฌ์กฐ์ฒด ์•ˆ์— ์žˆ๋Š” getContatcts() ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜๊ฐ’์ด Contacts (non-optional) ์ด๋ฉฐ, getContacts ํ•จ์ˆ˜๋ฅผ ๋‹ด์€ ์ƒ์ˆ˜๊ฐ€ optional type ์ธ ๊ฒฝ์šฐ์— ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋ณด์ž.

let function = potato?.getContacts
// ์ด๋ ‡๊ฒŒ ์˜ต์…”๋„ ํƒ€์ž…์ด ์•„๋‹Œ ํ•จ์ˆ˜๋ฅผ, ์ƒ์ˆ˜์— ์„ ์–ธํ–ˆ๋Š”๋ฐ, ์ด ์ƒ์ˆ˜๋Š” ์˜ต์…”๋„์ผ๋–„!!

function()?.email 
// ์ด๋ ‡๊ฒŒ ์˜ต์…”๋„ ์ฒด์ด๋‹ํ•จ.

 

3) function?()?

์ด๊ฑด ๋˜ ๋ญ๋žŒ,, ์–‘์ชฝ์— ? ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๊ฒฝ์šฐ๋Š” ์–ธ์ œ ์‚ฌ์šฉํ•˜๋Š”๊ฐ€? ๋ฐ”๋กœ ํ•จ์ˆ˜ ์ž์ฒด๋„ ์˜ต์…”๋„์ด๊ณ , ๋ฆฌํ„ด๊ฐ’๋„ ์˜ต์…”๋„์ผ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‹ค์‹œ ์ฒ˜์Œ์œผ๋กœ ๋Œ์•„๊ฐ€์„œ Person๊ตฌ์กฐ์ฒด์— ์žˆ๋Š” func์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์˜ต์…”๋„ ํƒ€์ž…์ด๋ผ๊ณ  ์น˜์ž. 

func getContacts() -> Contacts? {
    return contacts
}

๊ทธ๋ฆฌ๊ณ  getContactsํ•จ์ˆ˜๋ฅผ ๋‹ด์€ ์ƒ์ˆ˜๋„, ์˜ต์…”๋„์ด๋ผ๊ณ  ํ•˜์ž.

let function = potato?.getContacts

์ด๋Ÿด๋•Œ, email๊ฐ’์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ต์…”๋„ ์ฒด์ด๋‹์„ ํ•œ๋‹ค.

function?()?.email

 

์ •๋ฆฌํ•˜์ž๋ฉด 

  1. ?() function์ด๋ž€ ํ•จ์ˆ˜๊ฐ€ ๋จผ์ € optional์ธ์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•ด์ฃผ๊ณ 
  2. ()? function ํ•จ์ˆ˜๊ฐ€ optional์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฆฌํ„ด๊ฐ’์ด ์˜ต์…”๋„์ธ์ง€ ์•„๋‹Œ์ง€ ๋˜ ์ฒดํฌํ•ด์ค€๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ?()?

 

โ–ถ ๋”•์…”๋„ˆ๋ฆฌ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜๋Š” ์˜ต์…”๋„ ์ฒด์ด๋‹

ํ•จ์ˆ˜์™€ ๋น„์Šทํ•œ ๊ฐœ๋…์œผ๋กœ ๋”•์…”๋„ˆ๋ฆฌ์— ๋ผ์›Œ์„œ ์‚ฌ์šฉ๋˜๊ธฐ๋„ ํ•œ๋‹ค. .. ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ดํŽด๋ณด์ž.

1. []?

์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด dic์ด ์กด์žฌํ•œ๋‹ค. ์ด dic์—์„œ name์ด๋ผ๋Š” key๊ฐ’์— ์ ‘๊ทผํ•˜์—ฌ, ๊ทธ ํ‚ค๊ฐ’์˜ value๋ฅผ countํ•ด๋ณด์ž. ๊ทธ๋Ÿด๋•Œ ๋ฐ”๋กœ []?๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

let dic: [String: String] = ["name": "contact"]
dic["name"]?.count

์™œ ? ์˜ต์…”๋„ ํƒ€์ž…๋„ ์•„๋‹Œ๋ฐ ์™œ์™œ์™œ์™œ??? ๋ฐ”๋กœ, dic์•ˆ์— nameํ‚ค๊ฐ’์„ ๊ฐ€์ง€๋Š” value๊ฐ€ ์—†์„ ์ˆ˜๋„ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.. ์œ ๋ ˆ์นด!!!!!  ๋”ฐ๋ผ์„œ ๋ฌด์กฐ๊ฑด์ ์œผ๋กœ optional type์ด ๋ฆฌํ„ด๋œ๋‹ค. ์ •๋ฆฌํ•˜์ž๋ฉด, ๋”•์…”๋„ˆ๋ฆฌ์˜ key๊ฐ’์œผ๋กœ ์–ป์€ value์˜ ๊ฐ’์˜ ์†์„œ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” []?๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. 

 

2. ?[]?

ํ•จ์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ด๊ฑด, ๋”•์…”๋„ˆ๋ฆฌ ํƒ€์ž… ์ž์ฒด๊ฐ€ ์˜ต์…”๋„์ธ๊ฒฝ์šฐ์ด๋‹ค. ํ•จ์ˆ˜์—์„œ๋„ ํ•จ์ˆ˜์ž์ฒด๊ฐ€ ์˜ต์…”๋„์ด๊ณ  ๋ฆฌํ„ด๊ฐ’๋„ ์˜ต์…”๋„์ด๋ฉด (์–‘์ชฝ์ด์˜ต์…”๋„์ด๋ฉด!!) ?๋ฅผ ๋‘๊ฐœ ๋ถ™์—ฌ์ฃผ์ง€์•Š์•˜๋Š”๊ฐ€? ๋ฐ”๋กœ ๋”•์…”๋„ˆ๋ฆฌ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋‹ค. ๋”•์…”๋„ˆ๋ฆฌ ์ž์ฒด๋„ ์˜ต์…”๋„์ด๊ณ , ๋ฐ”๋กœ ์ „์— ๋ฐฐ์› ๋“ฏ์ด ๋”•์…”๋„ˆ๋ฆฌ์—์„œ key๊ฐ’์— ์กด์žฌํ•˜๋Š” value์— ์ ‘๊ทผํ•˜๋ ค๋ฉด ๋˜ ๋ฆฌํ„ด๊ฐ’์ด ๋ฌด์กฐ๊ฑด ์˜ต์…”๋„์ด๋‹ˆ๊นŒ,, ๊ทธ๋ž˜์„œ ?[] ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š ใ„ด๊ฒƒ์ด๊ณ  ,, ๊ทธ๋ž˜์„œ ?[]? ๋งŒ ์กด์žฌํ•˜๋Š”๊ฒƒ์ด๊ณ ~~ 

 


์ด๋ ‡๊ฒŒ ๊ธธ๊ณ  ๊ธด ์˜ต์…”๋„ ์ฒด์ด๋‹์—๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ์™„์ „ํžˆ!! ๊ฐœ๋ฐœ์ž ์†Œ๋“ค๋‹˜์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์†Œ๋“ค๋‹˜ ๋ธ”๋กœ๊ทธ ์ •๋ฆฌ ์ง„์งœ ์ž˜๋˜์–ด ์žˆ์œผ๋‹ˆ, ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋งŽ์€ ๋„์›€์ด ๋ ๊ฒƒ๊ฐ™์Šต๋‹ˆ๋‹ค. 

 

๋ฐ˜์‘ํ˜•