λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
python

[μ½”ν…Œ] #01 μ˜€ν”ˆμ±„νŒ…λ°©

by Soo-minJeon 2022. 5. 12.

# Lv.2

 

πŸ›  μ˜€ν”ˆμ±„νŒ…λ°©

πŸ”— https://programmers.co.kr/learn/courses/30/lessons/42888

πŸ”§  μž…μΆœλ ₯ 예

πŸ”§ μ œν•œμ‚¬ν•­

  • recordλŠ” λ‹€μŒκ³Ό 같은 λ¬Έμžμ—΄μ΄ λ‹΄κΈ΄ 배열이며, κΈΈμ΄λŠ” 1 μ΄μƒ 100,000 μ΄ν•˜μ΄λ‹€.
  • λ‹€μŒμ€ record에 λ‹΄κΈ΄ λ¬Έμžμ—΄μ— λŒ€ν•œ μ„€λͺ…이닀.
    • λͺ¨λ“  μœ μ €λŠ” [μœ μ € 아이디]둜 κ΅¬λΆ„ν•œλ‹€.
    • [μœ μ € 아이디] μ‚¬μš©μžκ°€ [λ‹‰λ„€μž„]으둜 μ±„νŒ…λ°©μ— μž…μž₯ - "Enter [μœ μ € 아이디] [λ‹‰λ„€μž„]" (ex. "Enter uid1234 Muzi")
    • [μœ μ € 아이디] μ‚¬μš©μžκ°€ μ±„νŒ…λ°©μ—μ„œ 퇴μž₯ - "Leave [μœ μ € 아이디]" (ex. "Leave uid1234")
    • [μœ μ € 아이디] μ‚¬μš©μžκ°€ λ‹‰λ„€μž„μ„ [λ‹‰λ„€μž„]으둜 λ³€κ²½ - "Change [μœ μ € 아이디] [λ‹‰λ„€μž„]" (ex. "Change uid1234 Muzi")
    • 첫 λ‹¨μ–΄λŠ” Enter, Leave, Change 쀑 ν•˜λ‚˜μ΄λ‹€.
    • 각 λ‹¨μ–΄λŠ” 곡백으둜 κ΅¬λΆ„λ˜μ–΄ 있으며, μ•ŒνŒŒλ²³ λŒ€λ¬Έμž, μ†Œλ¬Έμž, 숫자둜만 μ΄λ£¨μ–΄μ Έμžˆλ‹€.
    • μœ μ € 아이디와 λ‹‰λ„€μž„μ€ μ•ŒνŒŒλ²³ λŒ€λ¬Έμž, μ†Œλ¬Έμžλ₯Ό κ΅¬λ³„ν•œλ‹€.
    • μœ μ € 아이디와 λ‹‰λ„€μž„μ˜ κΈΈμ΄λŠ” 1 μ΄μƒ 10 μ΄ν•˜μ΄λ‹€.
    • μ±„νŒ…λ°©μ—μ„œ λ‚˜κ°„ μœ μ €κ°€ λ‹‰λ„€μž„μ„ λ³€κ²½ν•˜λŠ” λ“± 잘λͺ» 된 μž…λ ₯은 μ£Όμ–΄μ§€μ§€ μ•ŠλŠ”λ‹€.

πŸ”§ 아이디어

πŸ”— python3

1) λ”•μ…”λ„ˆλ¦¬ μžλ£Œν˜• ν™œμš©

μ‚¬μš©μžμ˜ 아이디와 λ‹‰λ„€μž„μ„ 담은 λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“€μž.

리슀트 ν˜•μ‹μ€ 쀑볡을 ν—ˆμš©ν•˜λ―€λ‘œ, μ‚¬μš©μžκ°€ λ‹‰λ„€μž„μ„ 바꿨을 λ•Œ κ·Έ μ „μ˜ λ‹‰λ„€μž„μ„ μ°Ύμ•„... forλ¬Έ...μƒˆλ‘œμš΄ λ‹‰λ„€μž„μœΌλ‘œ λ³€κ²½... ν•΄μ•Όν•΄μ„œ λ²ˆκ±°λ‘­λ‹€λŠ” νŒλ‹¨μ΄ λ“€μ–΄ λ”•μ…”λ„ˆλ¦¬λ₯Ό μ‚¬μš©ν•˜κ³ μž ν–ˆλ‹€.

id_name = {}

결과둜 λ°˜ν™˜ν•  λŒ€μΉ˜μ–΄λ₯Ό 담은 λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“€μž.

μž…λ ₯으둜 Leave을 λ°›μœΌλ©΄ '~λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€.' / Enter을 λ°›μœΌλ©΄ '~λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€.'λ₯Ό 좜λ ₯ν•΄μ•Ό ν•œλ‹€.

 dictionary[Leave]와 같이 λ°”λ‘œ λŒ€μΉ˜μ–΄λ‘œ μ ‘κ·Όν•  수 있기 λ•Œλ¬Έμ— 미리 λ”•μ…”λ„ˆλ¦¬λ‘œ λ§Œλ“€μ–΄λ†“μž

    activity = {'Leave' : 'λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€.', 
                'Enter' : 'λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€.', 
                'Change': ''}

πŸ”§ μ½”λ“œ μž‘μ„±

def solution(record):
    answer = [] # μ •λ‹΅μœΌλ‘œ λ°˜ν™˜ν•  λ°°μ—΄
    
    # λŒ€μΉ˜μ–΄ λ”•μ…”λ„ˆλ¦¬
    activity = {'Leave' : 'λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€.', 
                'Enter' : 'λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€.', 
                'Change': ''}
    
    id_name = {}
    
    # μž…λ ₯으둜 λ“€μ–΄μ˜¨ 기둝의 수만큼 for문을 돌렀
    # ν‚€(μ‚¬μš©μž 아이디) : κ°’(μ΅œμ’…μ μœΌλ‘œ λ³€κ²½λœ λ‹‰λ„€μž„) ν˜•νƒœμ˜ λ”•μ…”λ„ˆλ¦¬ 생성
    for i in range(len(record)):
        
        splited = record[i].split()
        
        if (splited[0] == 'Enter'):
            id_name[splited[1]] = splited[2]
                
        elif (splited[0] == 'Change'):
            id_name[splited[1]] = splited[2]
            
        # Leaveμ—μ„œλŠ” μƒˆλ‘œμš΄ μœ μ €μ˜ λ“±μž₯μ΄λ‚˜ λ‹‰λ„€μž„ 변경이 없기에 κ³ λ €ν•˜μ§€ μ•ŠλŠ”λ‹€.
            
    
    for i in range(len(record)):
        splited = record[i].split()
        
        if (splited[0] != 'Change') :  # ChangeλŠ” κ²°κ³Ό 배열에 λ„£μ§€ μ•ŠμœΌλ―€λ‘œ
            answer.append(id_name[splited[1]] + activity[splited[0]])
                
        
    return answer