๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Developer/๐ŸŸ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/python] ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ

์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ

์นด์นด์˜คํ†ก ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ์—์„œ๋Š” ์นœ๊ตฌ๊ฐ€ ์•„๋‹Œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋ณธ๋ž˜ ๋‹‰๋„ค์ž„์ด ์•„๋‹Œ ๊ฐ€์ƒ์˜ ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

 

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

[๋‹‰๋„ค์ž„]๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.

 

์ฑ„ํŒ…๋ฐฉ์—์„œ ๋ˆ„๊ตฐ๊ฐ€ ๋‚˜๊ฐ€๋ฉด ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

[๋‹‰๋„ค์ž„]๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.

 

์ฑ„ํŒ…๋ฐฉ์—์„œ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€์ด๋‹ค.

  • ์ฑ„ํŒ…๋ฐฉ์„ ๋‚˜๊ฐ„ ํ›„, ์ƒˆ๋กœ์šด ๋‹‰๋„ค์ž„์œผ๋กœ ๋‹ค์‹œ ๋“ค์–ด๊ฐ„๋‹ค.
  • ์ฑ„ํŒ…๋ฐฉ์—์„œ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

 

๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•  ๋•Œ๋Š” ๊ธฐ์กด์— ์ฑ„ํŒ…๋ฐฉ์— ์ถœ๋ ฅ๋˜์–ด ์žˆ๋˜ ๋ฉ”์‹œ์ง€์˜ ๋‹‰๋„ค์ž„๋„ ์ „๋ถ€ ๋ณ€๊ฒฝ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฑ„ํŒ…๋ฐฉ์— Muzi์™€ Prodo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์˜ค๋ฉด ์ฑ„ํŒ…๋ฐฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

"Muzi๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

 

 

์ฑ„ํŒ…๋ฐฉ์— ์žˆ๋˜ ์‚ฌ๋žŒ์ด ๋‚˜๊ฐ€๋ฉด ์ฑ„ํŒ…๋ฐฉ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚จ๋Š”๋‹ค.

 

"Muzi๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Muzi๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."

 

 

Muzi๊ฐ€ ๋‚˜๊ฐ„ํ›„ ๋‹ค์‹œ ๋“ค์–ด์˜ฌ ๋•Œ, Prodo ๋ผ๋Š” ๋‹‰๋„ค์ž„์œผ๋กœ ๋“ค์–ด์˜ฌ ๊ฒฝ์šฐ ๊ธฐ์กด์— ์ฑ„ํŒ…๋ฐฉ์— ๋‚จ์•„์žˆ๋˜ Muzi๋„ Prodo๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

 

 

์ฑ„ํŒ…๋ฐฉ์€ ์ค‘๋ณต ๋‹‰๋„ค์ž„์„ ํ—ˆ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ˜„์žฌ ์ฑ„ํŒ…๋ฐฉ์—๋Š” Prodo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ์ด ๋‘ ๋ช…์ด ์žˆ๋‹ค. ์ด์ œ, ์ฑ„ํŒ…๋ฐฉ์— ๋‘ ๋ฒˆ์งธ๋กœ ๋“ค์–ด์™”๋˜ Prodo๊ฐ€ Ryan์œผ๋กœ ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์ฑ„ํŒ…๋ฐฉ ๋ฉ”์‹œ์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค.

 

"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Ryan๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค."
"Prodo๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค."

 

 

์ฑ„ํŒ…๋ฐฉ์— ๋“ค์–ด์˜ค๊ณ  ๋‚˜๊ฐ€๊ฑฐ๋‚˜, ๋‹‰๋„ค์ž„์„ ๋ณ€๊ฒฝํ•œ ๊ธฐ๋ก์ด ๋‹ด๊ธด ๋ฌธ์ž์—ด ๋ฐฐ์—ด record๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ,

 

๋ชจ๋“  ๊ธฐ๋ก์ด ์ฒ˜๋ฆฌ๋œ ํ›„, ์ตœ์ข…์ ์œผ๋กœ ๋ฐฉ์„ ๊ฐœ์„คํ•œ ์‚ฌ๋žŒ์ด ๋ณด๊ฒŒ ๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ฌธ์ž์—ด ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•˜๋ผ.

 


ํ’€์ด

 

def solution(re):
    re = [l.split(' ') for l in re]
    dic = {}
    li = []
    
    for w in re:
        if w[0] == 'Enter' or w[0] == 'Change':
            dic[w[1]] = w[2]
                
        if w[0] == 'Enter':
            li.append([w[1],'in'])
                
        elif w[0] == 'Leave':
            li.append([w[1],'out'])

    for i in range(len(li)):
        if li[i][1] == 'in':
            li[i] = '{}๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.'.format(dic[li[i][0]])
            
        else :
            li[i] = '{}๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.'.format(dic[li[i][0]])
    return li

 


ํ’€์ด๊ณผ์ •

 

๋ฌธ์ž์—ด์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

["Enter uid1234 Muzi", "Enter uid4567 Prodo"] -> [['Enter', 'uid1234', 'Muzi'], ['Enter', 'uid4567', 'Prodo']]

 

re = [l.split(' ') for l in re]

 

 

dic ์— key๊ฐ’์€ id๋กœ, value๊ฐ’์€ ๋‹‰๋„ค์ž„์œผ๋กœ ์ €์žฅํ•œ๋‹ค.

 

li ์—๋Š” ์ฑ„ํŒ…๋ฐฉ์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค. ์ด๋•Œ li ์—๋Š” ๋‹‰๋„ค์ž„๋ง๊ณ  id๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 

    dic = {}
    li = []

 

 

Enter๊ณผ Change์ผ๋•Œ๋งŒ ๋‹‰๋„ค์ž„์ด ๋ฐ”๋€”์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Enter๊ณผ Change์ผ๋•Œ dic์— ๋‹‰๋„ค์ž„์„ ์ €์žฅํ•œ๋‹ค.

 

        if w[0] == 'Enter' or w[0] == 'Change':
            dic[w[1]] = w[2]

 

 

li ์— ์ฑ„ํŒ…๋ฐฉ์— ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 

        if w[0] == 'Enter':
            li.append([w[1],'in'])
                
        elif w[0] == 'Leave':
            li.append([w[1],'out'])

 

 

li ์— ์ฑ„ํŒ…์ฐฝ์— ๋‚˜ํƒ€๋‚˜๋Š” ๋ฌธ์žฅ์„ ์ €์žฅํ•˜๋ฉด์„œ dic ์˜ key ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” id ๊ฐ’์— ๋Œ€ํ•œ value๋ฅผ ์ €์žฅํ•œ๋‹ค. 

 

    for i in range(len(li)):
        if li[i][1] == 'in':
            li[i] = '{}๋‹˜์ด ๋“ค์–ด์™”์Šต๋‹ˆ๋‹ค.'.format(dic[li[i][0]])
            
        else :
            li[i] = '{}๋‹˜์ด ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค.'.format(dic[li[i][0]])
    return li