๊ธ€ ์ž‘์„ฑ์ž: ํƒ์‹œ ์šด์ „์‚ฌ
๋ฐ˜์‘ํ˜•

๐Ÿš ์…”ํ‹€๋ฒ„์Šค - [1์ฐจ] 2018 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ ์ฑ„์šฉ / Python / KAKAO BLIND RECRUITMENT

๋ฌธ์ œ ์„ค๋ช…

์นด์นด์˜ค์—์„œ๋Š” ๋ฌด๋ฃŒ ์…”ํ‹€๋ฒ„์Šค๋ฅผ ์šดํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํŒ๊ต์—ญ์—์„œ ํŽธํ•˜๊ฒŒ ์‚ฌ๋ฌด์‹ค๋กœ ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์นด์นด์˜ค์˜ ์ง์›์€ ์„œ๋กœ๋ฅผ 'ํฌ๋ฃจ'๋ผ๊ณ  ๋ถ€๋ฅด๋Š”๋ฐ, ์•„์นจ๋งˆ๋‹ค ๋งŽ์€ ํฌ๋ฃจ๋“ค์ด ์ด ์…”ํ‹€์„ ์ด์šฉํ•˜์—ฌ ์ถœ๊ทผํ•œ๋‹ค.

์ด ๋ฌธ์ œ์—์„œ๋Š” ํŽธ์˜๋ฅผ ์œ„ํ•ด ์…”ํ‹€์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ์šดํ–‰ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

  • ์…”ํ‹€์€ 09:00๋ถ€ํ„ฐ ์ด nํšŒ t๋ถ„ ๊ฐ„๊ฒฉ์œผ๋กœ ์—ญ์— ๋„์ฐฉํ•˜๋ฉฐ, ํ•˜๋‚˜์˜ ์…”ํ‹€์—๋Š” ์ตœ๋Œ€ m๋ช…์˜ ์Šน๊ฐ์ด ํƒˆ ์ˆ˜ ์žˆ๋‹ค.
  • ์…”ํ‹€์€ ๋„์ฐฉํ–ˆ์„ ๋•Œ ๋„์ฐฉํ•œ ์ˆœ๊ฐ„์— ๋Œ€๊ธฐ์—ด์— ์„  ํฌ๋ฃจ๊นŒ์ง€ ํฌํ•จํ•ด์„œ ๋Œ€๊ธฐ ์ˆœ์„œ๋Œ€๋กœ ํƒœ์šฐ๊ณ  ๋ฐ”๋กœ ์ถœ๋ฐœํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 09:00์— ๋„์ฐฉํ•œ ์…”ํ‹€์€ ์ž๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋ฉด 09:00์— ์ค„์„ ์„  ํฌ๋ฃจ๋„ ํƒˆ ์ˆ˜ ์žˆ๋‹ค.

์ผ์ฐ ๋‚˜์™€์„œ ์…”ํ‹€์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ๊ท€์ฐฎ์•˜๋˜ ์ฝ˜์€, ์ผ์ฃผ์ผ๊ฐ„์˜ ์ง‘์š”ํ•œ ๊ด€์ฐฐ ๋์— ์–ด๋–ค ํฌ๋ฃจ๊ฐ€ ๋ช‡ ์‹œ์— ์…”ํ‹€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š”์ง€ ์•Œ์•„๋ƒˆ๋‹ค. ์ฝ˜์ด ์…”ํ‹€์„ ํƒ€๊ณ  ์‚ฌ๋ฌด์‹ค๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋„์ฐฉ ์‹œ๊ฐ ์ค‘ ์ œ์ผ ๋Šฆ์€ ์‹œ๊ฐ์„ ๊ตฌํ•˜์—ฌ๋ผ.

๋‹จ, ์ฝ˜์€ ๊ฒŒ์œผ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์‹œ๊ฐ์— ๋„์ฐฉํ•œ ํฌ๋ฃจ ์ค‘ ๋Œ€๊ธฐ์—ด์—์„œ ์ œ์ผ ๋’ค์— ์„ ๋‹ค. ๋˜ํ•œ, ๋ชจ๋“  ํฌ๋ฃจ๋Š” ์ž ์„ ์ž์•ผ ํ•˜๋ฏ€๋กœ 23:59์— ์ง‘์— ๋Œ์•„๊ฐ„๋‹ค. ๋”ฐ๋ผ์„œ ์–ด๋–ค ํฌ๋ฃจ๋„ ๋‹ค์Œ๋‚  ์…”ํ‹€์„ ํƒ€๋Š” ์ผ์€ ์—†๋‹ค.

์ž…๋ ฅ ํ˜•์‹

์…”ํ‹€ ์šดํ–‰ ํšŸ์ˆ˜ n, ์…”ํ‹€ ์šดํ–‰ ๊ฐ„๊ฒฉ t, ํ•œ ์…”ํ‹€์— ํƒˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ํฌ๋ฃจ ์ˆ˜ m, ํฌ๋ฃจ๊ฐ€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ์„ ๋ชจ์€ ๋ฐฐ์—ด timetable์ด ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

  • 0 ๏ผœ n โ‰ฆ 10
  • 0 ๏ผœ t โ‰ฆ 60
  • 0 ๏ผœ m โ‰ฆ 45
  • timetable์€ ์ตœ์†Œ ๊ธธ์ด 1์ด๊ณ  ์ตœ๋Œ€ ๊ธธ์ด 2000์ธ ๋ฐฐ์—ด๋กœ, ํ•˜๋ฃจ ๋™์•ˆ ํฌ๋ฃจ๊ฐ€ ๋Œ€๊ธฐ์—ด์— ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ์ด HH:MM ํ˜•์‹์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ํฌ๋ฃจ์˜ ๋„์ฐฉ ์‹œ๊ฐ HH:MM์€ 00:01์—์„œ 23:59 ์‚ฌ์ด์ด๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์ฝ˜์ด ๋ฌด์‚ฌํžˆ ์…”ํ‹€์„ ํƒ€๊ณ  ์‚ฌ๋ฌด์‹ค๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ œ์ผ ๋Šฆ์€ ๋„์ฐฉ ์‹œ๊ฐ์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋„์ฐฉ ์‹œ๊ฐ์€ HH:MM ํ˜•์‹์ด๋ฉฐ, 00:00์—์„œ 23:59 ์‚ฌ์ด์˜ ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ˜ƒ ํ’€์ด 1

def timeToMinute (time):
    lst = time.split(':')
    return int(lst[0])*60 + int(lst[1])

def minuteToTime (minute):
    div, mod = divmod(minute,60)
    return "%02d:%02d" % (div, mod)

def crewTime(timetable):
    return [timeToMinute(time) for time in timetable]

def shuttleTime(n, t, start = '09:00'):
    shuttle = [timeToMinute(start)]
    for n1 in range(n-1):
        shuttle.append(shuttle[-1]+t)
    return shuttle

def duplicateTime(c,integrate):
    if not c in integrate.keys():
        return c
    else:
        return duplicateTime(c + 0.001, integrate)

def solution(n, t, m, timetable):
    crew = sorted(crewTime(timetable))
    shuttle = shuttleTime(n, t)

    conTime = set(shuttle + crew)
    for c in set(crew):
        conTime.add(c - 1)
    for con in sorted(list(conTime))[::-1]:
        integrate = dict()
        for c in crew:
            integrate[duplicateTime(c,integrate)] = 'crew'
        integrate[duplicateTime(con,integrate)] = 'con'
        for sh in shuttle:
            integrate[duplicateTime(sh,integrate)] = 'shuttle'
        waiting_line = []
        for time in sorted(integrate.keys()):
            if 'crew' == integrate[time]:
                waiting_line.append('crew')
            elif 'con' == integrate[time]:
                waiting_line.append('con')
            elif 'shuttle' == integrate[time]:
                waiting_line = waiting_line[m:]
        if not 'con' in waiting_line:
            return minuteToTime(con)

๋ฐฑํŠธ๋ž˜ํ‚น(Backtracking) ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•œ ํ’€์ด์ด๋‹ค.

def timeToMinute (time):
    lst = time.split(':')
    return int(lst[0])*60 + int(lst[1])

def minuteToTime (minute):
    div, mod = divmod(minute,60)
    return "%02d:%02d" % (div, mod)

์‹œ๊ฐ„์˜ ํ‘œํ˜„ ํ˜•์‹์€ ์ตœ์†Œํ•œ์˜ ๋‹จ์œ„๋กœ ๊ณ„์‚ฐ ํ•˜๋Š” ๊ฒŒ ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ํ˜•์‹์„ ๋ณ€ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๋งŒ๋“ค์—ˆ๋‹ค.

def shuttleTime(n, t, start = '09:00'):
    shuttle = [timeToMinute(start)]
    for n1 in range(n-1):
        shuttle.append(shuttle[-1]+t)
    return shuttle

์…”ํ‹€์ด ์˜ค๋Š” ์‹œ๊ฐ„์— ๋Œ€ํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋„ ํ•˜๋‚˜ ๋งŒ๋“ค์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์œ„์— ๋งŒ๋“  ํ˜•์‹ ๋ณ€ํ™˜ ํ•จ์ˆ˜์ธ timeToMinute๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด์ œ ๋ณธ๊ฒฉ์ ์œผ๋กœ ๋ฌธ์ œ๋กœ ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋Š” ๋ฐ ์…”ํ‹€ ์‹œ๊ฐ„๊ณผ ํฌ๋ฃจ๋“ค์˜ ์‹œ๊ฐ„์„ ํ•ฉ์นœ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ , ์ถ”๊ฐ€์ ์œผ๋กœ ๊ฐ€๋Šฅ ์„ฑ์ด ์žˆ๋Š” ์‹œ๊ฐ„์œผ๋กœ ํ•ด๋‹น ์‹œ๊ฐ„์— 1๋ถ„์„ ๋บ€ ๊ฐ’์„ ์ง‘ํ•ฉ์— ์ถ”๊ฐ€ํ•ด์„œ ์ •๋‹ต์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ€์ง„ ๊ฒƒ๋“ค๋งŒ ๋ชจ์ธ ์ฝ˜์˜ ์‹œ๊ฐ„์ด ๋  conTime์ด๋ผ๋Š” ์ง‘ํ•ฉ์„ ์ž‘์„ฑํ•œ๋‹ค.

์ด ๋•Œ, conTime์„ ์‹œ๊ฐ„์ด ํฐ ๊ฒƒ๋ถ€ํ„ฐ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํ™•์ธํ•˜๊ฒŒ ๋˜๋ฉด ์ฝ˜์ด ๋ฒ„์Šค๋ฅผ ๋ชป ํƒ€๋‹ค๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ฒ„์Šค๋ฅผ ํƒˆ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๊ตฌํ•ด์งˆ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์‹œ๊ฐ„์ด ๋ฐ”๋กœ ์ฝ˜์ด ์…”ํ‹€ ๋ฒ„์Šค๋ฅผ ํƒˆ ์ˆ˜ ์žˆ๋Š” ์ œ์ผ ๋Šฆ์€ ์‹œ๊ฐ„์ด ๋˜๊ฒŒ ๋œ๋‹ค.

๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํ™•์ธํ•˜๋‹ค๋ณด๋ฉด, crew์˜ ์‹œ๊ฐ„์ด ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋˜๋Š” ๋ฐ, ํ•ด๋‹น ๋ฌธ์ œํ’€์ด์— ์‚ฌ์šฉ๋œ ์‚ฌ์ „ํ˜•์˜ ๊ฒฝ์šฐ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์•„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ํŒŒํ›ผํ•˜๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

def duplicateTime(c,integrate):
    if not c in integrate.keys():
        return c
    else:
        return duplicateTime(c + 0.001, integrate)

์ธ์ž๋กœ integrate๋ผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์— ๋„ฃ์„ key๊ฐ’(์‹œ๊ฐ„)๊ณผ ํ˜„์žฌ for-loop๋ฅผ ๋Œ๊ณ  ์žˆ๋Š” integrate๋ผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์„ ๋„ฃ๊ณ , ๋งŒ์ผ ์‹œ๊ฐ„ ๊ฐ’์ด ํ˜„์žฌ ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์ธ integrate์— ์žˆ๋‹ค๋ฉด ์žฌ๊ท€๋ฅผ ํ†ตํ•ด 0.001์„ ๋”ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ฝ”๋“œ๋ฅผ ์งœ๊ฒŒ ๋˜๋ฉด, {540: 'crew', 540.001: 'crew', 540.002: 'crew', 540.0029999999999: 'crew', 541: 'con', 540.0039999999999: 'shuttle', 541.001: 'shuttle'} ์ด๋Ÿฐ ์‹์œผ๋กœ ์ €์žฅ๋˜์–ด ๊ทธ ์•ˆ์—์„œ ์ค‘๋ณต์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

for time in sorted(integrate.keys()):
            if 'crew' == integrate[time]:
                waiting_line.append('crew')
            elif 'con' == integrate[time]:
                waiting_line.append('con')
            elif 'shuttle' == integrate[time]:
                waiting_line = waiting_line[m:]

๊ทธ๋ฆฌ๊ณ  integrate ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์„ ์ด์šฉํ•ด waiting_line์— crew์™€ con์„ ๋„ฃ์–ด ์ค„์„ ๋งŒ๋“ค๊ณ  shuttle์ด ์˜ค๋ฉด ์ค„์„ ์—†์—๋Š” ๊ตฌ์กฐ๋กœ ์ง ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ waiting_line์—๋Š” ํ•ด๋‹น ์‹œํ–‰์˜ con ์œ„์น˜์ผ ๋•Œ, ๋ฒ„์Šค๋ฅผ ๋ชป ํƒ„ ์ธ์›์ด ๋‚˜์˜ค๊ฒŒ ๋  ๊ฒƒ ์ด๋‹ค. ์ด์ œ waiting_line์— ์ฝ˜์ด ์—†๋‹ค๋ฉด ์ฝ˜์ด ์ •์ƒ์ ์œผ๋กœ ๋ฒ„์Šค๋ฅผ ํƒ€๊ฒŒ ๋œ ๊ฐ€์žฅ ๋Šฆ์€ ์‹œ๊ฐ„์ด๋ผ๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋ฌธ์ œ๋Š” ํ•ด๊ฒฐ๋œ๋‹ค.

 if not 'con' in waiting_line:
            return minuteToTime(con)

๐Ÿ‘€ ๋ˆˆ ์—ฌ๊ฒจ ๋ณผ ๋งŒํ•œ ํ’€์ด

def solution(n, t, m, timetable):
    answer = ''
    timetable = [ int(time[:2])*60 + int(time[3:5]) for time in timetable ]

    timetable.sort()

    for i in range(n):
        last_time = 540 + (n - 1) * t
        if len(timetable) < m:
            return '%02d:%02d' % (last_time // 60, last_time % 60)
        if i == n - 1:
            if timetable[0] > last_time:
                return '%02d:%02d' % (last_time // 60, last_time % 60)
            time = timetable[m - 1] - 1
            return '%02d:%02d' % (time // 60, time % 60)
        for j in range(m-1, -1, -1):
            bus_arrive = 540 + i * t
            if timetable[j] <= bus_arrive:
                del timetable[j]

์ด ํ’€์ด๋Š” timetable์„ ์ง€์›Œ๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์—ˆ๋‹ค.

์ฒซ ๋ฒˆ์งธ๋กœ ์ฒดํฌํ•  ๊ฑด timetable์˜ ๊ธธ์ด๊ฐ€ m๋ณด๋‹ค ์ž‘์€๊ฐ€์ด๋‹ค. ์ž‘์€ ๊ฒฝ์šฐ ๋ฒ„์Šค๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋งŽ์€ ๊ฒฝ์šฐ๋กœ ๋ฒ„์Šค์˜ ๋งˆ์ง€๋ง‰ ์‹œ๊ฐ„์ด ๋‹ต์ด ๋œ๋‹ค.

๋‘ ๋ฒˆ์งธ๋กœ ์ฒดํฌํ•  ๊ฑด ํ•ด๋‹น ์‹œํ–‰์ด ๋งˆ์ง€๋ง‰์ธ ์ง€์— ๋Œ€ํ•œ ๊ฒƒ์ด๋‹ค. ๋‚จ์€ ์ธ์› ์ค‘ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ž‘์€ timetable[0]๊ฐ€ ๋ฒ„์Šค ๋งˆ์ง€๋ง‰ ์‹œ๊ฐ„๋ณด๋‹ค ์ปค๋„ ์—ญ์‹œ ๋ฒ„์Šค์˜ ๋งˆ์ง€๋ง‰ ์‹œ๊ฐ„์ด ๋‹ต์ด ๋œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ๋งˆ์ง€๋ง‰์— ๋ฒ„์Šค์— ํƒ€๋Š” ํฌ๋ฃจ์˜ ์‹œ๊ฐ„ ๋ณด๋‹ค 1์ด ์ž‘์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น ๋ฒ„์Šค ์‹œ๊ฐ„ ์ดํ•˜์— ํ•ด๋‹นํ•˜๋Š” timetable์— ํ•ด๋‹นํ•˜๋Š” ์ธ์›์„ ์ง€์šฐ๋Š” for-loop์ธ๋ฐ ์—ฌ๊ธฐ์„œ ํ•œ ๊ฐ€์ง€ ํŠน์ดํ•œ ๋ฐฉ์‹์„ ์ผ๋‹ค. range(m-1, -1, -1)์„ ์‚ฌ์šฉํ•ด์„œ 0์—์„œ m-1๊นŒ์ง€ ์— ํ•ด๋‹นํ•˜๋Š” timetable์„ ๋น„๊ตํ•˜๋Š” ๋ฐ ๊ฑฐ๊พธ๋กœ ๋น„๊ตํ•˜๋ฉด์„œ timetable์„ ์ง€์›Œ๊ฐ”๋‹ค. ์ด ๋ฐฉ์‹์„ ์ผ๋ฐ˜์ ์ธ range์˜ ์‚ฌ์šฉ๋ฒ•์ฒ˜๋Ÿผ range(0, m-1)๋กœ ํ•˜๊ฒŒ ๋˜๋ฉด ์ธ๋ฑ์Šค๊ฐ€ ์ ์€ ๋ฐฐ์—ด์˜ ์š”์†Œ ๋ถ€ํ„ฐ ์ง€์šฐ๊ฒŒ ๋˜๋ฏ€๋กœ timetable์ด ์›์น˜ ์•Š์€ ๊ฒฐ๊ณผ ๊ฐ’์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ for in loop์—์„œ ๋ฐฐ์—ด์„ ์ œ๊ฑฐํ•˜๋Š” ํ–‰๋™์€ ํ•˜์ง€ ์•Š๋Š” ๋ฐ, ์ด๋ ‡๊ฒŒ ํ•˜๊ฒŒ ๋˜๋ฉด for in loop๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ์›ํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

cf. ๋ฌธ์ œ ํ•ด์„์— ๋งŽ์€ ์‹œ๊ฐ„์ด ๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜ ์ตœ๋Œ€ํ•œ ๋นจ๋ฆฌ ๋‚˜๋ˆ„๋Š” ๊ฒŒ ์ด ๋ฌธ์ œ์˜ ํ•ต์‹ฌ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•˜์ง€ ๋ชปํ•œ ๋‹ค๋ฉด ๋‚ด ํ’€์ด ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๋ชจ๋“  ๊ฐ€๋Šฅ์„ฑ์„ ์‹œํ—˜ํ•ด๋ณด๋Š” ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

๋ฐ˜์‘ํ˜•