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

๐Ÿคณ ๋ฐฉ๊ธˆ ๊ทธ ๊ณก - [3์ฐจ] 2018 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ ์ฑ„์šฉ / Python

๋ผ๋””์˜ค๋ฅผ ์ž์ฃผ ๋“ฃ๋Š” ๋„ค์˜ค๋Š” ๋ผ๋””์˜ค์—์„œ ๋ฐฉ๊ธˆ ๋‚˜์™”๋˜ ์Œ์•…์ด ๋ฌด์Šจ ์Œ์•…์ธ์ง€ ๊ถ๊ธˆํ•ด์งˆ ๋•Œ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋Ÿด ๋•Œ ๋„ค์˜ค๋Š” ๋‹ค์Œ ํฌํ„ธ์˜ โ€˜๋ฐฉ๊ธˆ๊ทธ๊ณกโ€™ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณค ํ•œ๋‹ค. ๋ฐฉ๊ธˆ๊ทธ๊ณก์—์„œ๋Š” TV, ๋ผ๋””์˜ค ๋“ฑ์—์„œ ๋‚˜์˜จ ์Œ์•…์— ๊ด€ํ•ด ์ œ๋ชฉ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์„œ๋น„์Šค์ด๋‹ค.


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


  • ๋ฐฉ๊ธˆ๊ทธ๊ณก ์„œ๋น„์Šค์—์„œ๋Š” ์Œ์•… ์ œ๋ชฉ, ์žฌ์ƒ์ด ์‹œ์ž‘๋˜๊ณ  ๋๋‚œ ์‹œ๊ฐ, ์•…๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ๋„ค์˜ค๊ฐ€ ๊ธฐ์–ตํ•œ ๋ฉœ๋กœ๋””์™€ ์•…๋ณด์— ์‚ฌ์šฉ๋˜๋Š” ์Œ์€ C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12๊ฐœ์ด๋‹ค.
  • ๊ฐ ์Œ์€ 1๋ถ„์— 1๊ฐœ์”ฉ ์žฌ์ƒ๋œ๋‹ค. ์Œ์•…์€ ๋ฐ˜๋“œ์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์ƒ๋˜๋ฉฐ ์Œ์•… ๊ธธ์ด๋ณด๋‹ค ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ๊ธธ ๋•Œ๋Š” ์Œ์•…์ด ๋Š๊น€ ์—†์ด ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐ˜๋ณตํ•ด์„œ ์žฌ์ƒ๋œ๋‹ค. ์Œ์•… ๊ธธ์ด๋ณด๋‹ค ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ์งง์„ ๋•Œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์žฌ์ƒ ์‹œ๊ฐ„๋งŒํผ๋งŒ ์žฌ์ƒ๋œ๋‹ค.
  • ์Œ์•…์ด 00:00๋ฅผ ๋„˜๊ฒจ์„œ๊นŒ์ง€ ์žฌ์ƒ๋˜๋Š” ์ผ์€ ์—†๋‹ค.
  • ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ์Œ์•…์ด ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๋•Œ์—๋Š” ๋ผ๋””์˜ค์—์„œ ์žฌ์ƒ๋œ ์‹œ๊ฐ„์ด ์ œ์ผ ๊ธด ์Œ์•… ์ œ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์žฌ์ƒ๋œ ์‹œ๊ฐ„๋„ ๊ฐ™์„ ๊ฒฝ์šฐ ๋จผ์ € ์ž…๋ ฅ๋œ ์Œ์•… ์ œ๋ชฉ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๋Š” ์Œ์•…์ด ์—†์„ ๋•Œ์—๋Š” โ€œ(None)โ€œ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ž…๋ ฅ ํ˜•์‹

์ž…๋ ฅ์œผ๋กœ ๋„ค์˜ค๊ฐ€ ๊ธฐ์–ตํ•œ ๋ฉœ๋กœ๋””๋ฅผ ๋‹ด์€ ๋ฌธ์ž์—ด m๊ณผ ๋ฐฉ์†ก๋œ ๊ณก์˜ ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด musicinfos๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.


  • m์€ ์Œ 1๊ฐœ ์ด์ƒ 1439๊ฐœ ์ดํ•˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.
  • musicinfos๋Š” 100๊ฐœ ์ดํ•˜์˜ ๊ณก ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๋ฐฐ์—ด๋กœ, ๊ฐ๊ฐ์˜ ๊ณก ์ •๋ณด๋Š” ์Œ์ต์ด ์‹œ์ž‘ํ•œ ์‹œ๊ฐ, ๋๋‚œ ์‹œ๊ฐ, ์Œ์•… ์ œ๋ชฉ, ์•…๋ณด ์ •๋ณด๊ฐ€ โ€˜,โ€˜๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด์ด๋‹ค.
  • ์Œ์•…์˜ ์‹œ์ž‘ ์‹œ๊ฐ๊ณผ ๋๋‚œ ์‹œ๊ฐ์€ 24์‹œ๊ฐ„ HH:MM ํ˜•์‹์ด๋‹ค.
  • ์Œ์•… ์ œ๋ชฉ์€ โ€˜,โ€™ ์ด์™ธ์˜ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž๋กœ ํ‘œํ˜„๋œ ๊ธธ์ด 1 ์ด์ƒ 64 ์ดํ•˜์˜ ๋ฌธ์ž์—ด์ด๋‹ค.
  • ์•…๋ณด ์ •๋ณด๋Š” ์Œ 1๊ฐœ ์ด์ƒ 1439๊ฐœ ์ดํ•˜๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

์ถœ๋ ฅ ํ˜•์‹

์กฐ๊ฑด๊ณผ ์ผ์น˜ํ•˜๋Š” ์Œ์•… ์ œ๋ชฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ˜ƒ ๋‚˜์˜ ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def solution(m, musicinfos):
    m = m.replace('A#','H');
    m = m.replace('C#','I');
    m = m.replace('D#','J');
    m = m.replace('F#','K');
    m = m.replace('G#','L');
    answer = ''
    result = None
    dic = dict()
    for info in musicinfos:
        start, end, title, sound = info.split(',')
        hour1, min1 = start.split(':')
        hour2, min2 = end.split(':')
        time = (int(hour2)-int(hour1))*60 + int(min2)-int(min1)
        sound = sound.replace('A#','H');
        sound = sound.replace('C#','I');
        sound = sound.replace('D#','J');
        sound = sound.replace('F#','K');
        sound = sound.replace('G#','L');
        sound = sound*(time//len(sound))+sound[0:time%len(sound)]
        dic[sound] = title
    for song in dic.keys():
        if m in song:
            if result == None:
                result = song
            else:
                if len(result) < len(song):
                    result = song
    if result != None:
        return dic[result]
    elsereturn "(None)"
cs

๋ฌธ์ œ ์„ค๋ช…๋Œ€๋กœ๋งŒ ์งœ๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. ์ผ๋‹จ musicinfos์•ˆ์˜ info ์ •๋ณด๋ฅผ ์‹œ์ž‘์‹œ๊ฐ„, ๋๋‚˜๋Š” ์‹œ๊ฐ„, ๋…ธ๋ž˜ ์ œ๋ชฉ, ์Œ์•…์œผ๋กœ ๋‚˜๋ˆ„์–ด์„œ ์ €์žฅํ•œ ๋’ค ๊ฑธ๋ฆฐ ์‹œ๊ฐ„์„ ๊ตฌํ•ด์„œ ์‹ค์ œ ๋…ธ๋ž˜์˜ ์Œ๋“ค์„ ๊ตฌํ•œ๋‹ค.


์ด ๋•Œ, #์ด ๋“ค์–ด๊ฐ„ ์Œ๋“ค์€ ๋‹ค๋ฅธ ์•ŒํŒŒ๋ฒณ์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด ๋‚˜์ค‘์— ํ•  ์‹œํ–‰์˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ฒŒ ํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋’ค ํ•ด๋‹น ์Œ์„ key ๊ฐ’์œผ๋กœ ํ•˜๊ณ  ๋…ธ๋ž˜ ์ œ๋ชฉ์„ value๋กœ ํ•˜๋Š” ์ •๋ณด๋ฅผ ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์— ๋„ฃ๋Š”๋‹ค. ๋‚˜๋จธ์ง€๋Š” ํ•ด๋‹นํ•˜๋Š” ๊ฒŒ 2๊ฐœ ์ด์ƒ์ผ ๋•Œ์˜ ๊ฒฝ์šฐ์— ๋Œ€ํ•œ ์ฝ”๋“œ๋งŒ ์งœ๋ฉด ๋งˆ๋ฌด๋ฆฌ ๋œ๋‹ค.




๋ฐ˜์‘ํ˜•