λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Coding Test Practice

[Coding Test Practice] μ˜€ν”ˆμ±„νŒ…λ°© 파이썬

by Whiimsy 2021. 10. 19.

πŸ₯― 링크

https://programmers.co.kr/learn/courses/30/lessons/42888

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - μ˜€ν”ˆμ±„νŒ…λ°©

μ˜€ν”ˆμ±„νŒ…λ°© μΉ΄μΉ΄μ˜€ν†‘ μ˜€ν”ˆμ±„νŒ…λ°©μ—μ„œλŠ” μΉœκ΅¬κ°€ μ•„λ‹Œ μ‚¬λžŒλ“€κ³Ό λŒ€ν™”λ₯Ό ν•  수 μžˆλŠ”λ°, 본래 λ‹‰λ„€μž„μ΄ μ•„λ‹Œ κ°€μƒμ˜ λ‹‰λ„€μž„μ„ μ‚¬μš©ν•˜μ—¬ μ±„νŒ…λ°©μ— λ“€μ–΄κ°ˆ 수 μžˆλ‹€. μ‹ μž…μ‚¬μ›μΈ κΉ€ν¬λ£¨λŠ” μΉ΄μΉ΄μ˜€ν†‘ 였

programmers.co.kr

 

πŸ₯― μ ‘κ·Ό

κ³ μœ ν•œ [user_id]에 λ§ˆμ§€λ§‰ [user_nick]을 λŒ€μž…ν•΄μ•Ό ν•œλ‹€.

[user_id]와 [user_nick]을 λ§€μΉ˜ν•΄μ€„ 수 μžˆλŠ” λ”•μ…”λ„ˆλ¦¬(Dictionary)λ₯Ό μ΄μš©ν•˜μž.

 

πŸ₯― μ½”λ“œ

def solution(record):
    answer = []
    
    # user_id : λ“€λ½λ‚ λ½ν•˜λŠ” user의 idλ₯Ό μˆœμ„œλŒ€λ‘œ 담을 λ°°μ—΄
    user_id = []
    
    # users : user_id 와 user_nick 을 λ§€μΉ˜μ‹œμΌœμ€„ λ”•μ…”λ„ˆλ¦¬
    users = {}
    
    for r in record:
        command = r.split() # κ²°κ³Όν˜•μ‹ μ˜ˆμ‹œ : ["Enter", "user_id", "user_nick"]
        # elc : Enter Leave Change μ…‹ 쀑 ν•˜λ‚˜
        elc = command[0]
        # uid : ν˜„μž¬ user_id
        uid = command[1]
        
        if elc == "Enter":
        	# users λ”•μ…”λ„ˆλ¦¬μ— uid : "user_nick" λ§€μΉ˜μ‹œμΌœμ£ΌκΈ°
            users[uid] = command[2]
            # λ“€λ½λ‚ λ½ν•˜λŠ” user의 idλ₯Ό μˆœμ„œλŒ€λ‘œ λ‹΄κΈ°
            user_id.append(uid)
            # μ •λ‹΅ 배열에 Enterλ₯Ό λœ»ν•˜λŠ” "E" 담아놓기
            answer.append("E")
            
        elif elc == "Leave":
        	# λ“€λ½λ‚ λ½ν•˜λŠ” user의 idλ₯Ό μˆœμ„œλŒ€λ‘œ λ‹΄κΈ°
            user_id.append(uid)
            # μ •λ‹΅ 배열에 Leaveλ₯Ό λœ»ν•˜λŠ” "L" 담아놓기
            answer.append("L")
            
        else: # elc == "Change":
        	# users λ”•μ…”λ„ˆλ¦¬μ— uid : 바뀐 "user_nick" λ§€μΉ˜μ‹œμΌœμ£ΌκΈ°
            users[uid] = command[2]
            
    # λ“€λ½λ‚ λ½ν•œ νšŸμˆ˜λ™μ•ˆ
    for i in range(len(answer)):
    	# user_id μˆœμ„œλŒ€λ‘œ users λ”•μ…”λ„ˆλ¦¬μ— λ§€μΉ­λ˜λŠ” user_nick λ°›μ•„μ˜€κΈ°
        user_nick = users[user_id[i]]
        
        if answer[i] == "E":
            answer[i] = user_nick + "λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€."
        else:
            answer[i] = user_nick + "λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€."
            
    return answer

 

πŸ₯― ν›„κΈ°

λ”•μ…”λ„ˆλ¦¬ ν™œμš©μ€ ν•„μˆ˜μ μ΄λ‹€..

λ”•μ…”λ„ˆλ¦¬λŠ” λ‹€μŒκ³Ό 같이 ν˜•μ‹μ— μ œν•œμ„ 갖지 μ•ŠμœΌλ©°

>>> a[3] = [1,2,3]
>>> a
{1: 'a', 2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

μ‚­μ œν•˜λŠ” 법도 κ°„λ‹¨ν•˜λ‹€.

>>> del a[1]
>>> a
{2: 'b', 'name': 'pey', 3: [1, 2, 3]}

 

μ£Όμ˜ν•  점은,

λ”•μ…”λ„ˆλ¦¬μ—μ„œ KeyλŠ” κ³ μœ ν•œ κ°’μ΄λ―€λ‘œ μ€‘λ³΅λ˜λŠ” Key 값을 μ„€μ •ν•΄ λ†“μœΌλ©΄ ν•˜λ‚˜λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€ 것듀이 λͺ¨λ‘ λ¬΄μ‹œλœλ‹€λŠ” 점을 μ£Όμ˜ν•΄μ•Ό ν•œλ‹€. λ‹€μŒ μ˜ˆμ—μ„œ λ³Ό 수 μžˆλ“―μ΄ λ™μΌν•œ Keyκ°€ 2개 μ‘΄μž¬ν•  경우 1:'a' 쌍이 λ¬΄μ‹œλœλ‹€.

>>> a = {1:'a', 1:'b'}
>>> a
{1: 'b'}

 

μ˜€λŠ˜μ€ κ°„λ‹¨νžˆ μ •μ˜μ— λŒ€ν•΄μ„œλ§Œ μ•Œκ³ , λ‚΄μΌ λ”•μ…”λ„ˆλ¦¬μ— κ΄€ν•œ ν•¨μˆ˜λ“€λ„ κ³΅λΆ€ν•˜μž.