Algorithm/Programmers

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ˜€ν”ˆμ±„νŒ…λ°© / 파이썬 / python / λ”•μ…”λ„ˆλ¦¬ λ°°μ—΄

rmsidgkrl 2020. 8. 5. 22:45
728x90
λ°˜μ‘ν˜•

πŸ’‘solutions_

βœ… λͺ¨λ“  μœ μ €μ˜ λ‹‰λ„€μž„μ„ μ €μž₯ν•˜λŠ” name_list λ”•μ…”λ„ˆλ¦¬(keyλŠ” κ³ μœ ν•œ μœ μ €μ•„μ΄λ””λ‘œ, valueλŠ” λ‹‰λ„€μž„μœΌλ‘œ μ €μž₯), μœ μ €λ“€μ˜ 행동(μž…μž₯, 퇴μž₯)을 μ €μž₯ν•˜λŠ” action_list 리슀트, μ΅œμ’… κ²°κ³Ό 값을 μ €μž₯ν•˜λŠ” result 리슀트 λ§Œλ“¬

βœ… 각 μž…λ ₯값은 '행동 μœ μ €μ•„μ΄λ”” λ‹‰λ„€μž„' 순으둜 곡백을 κΈ°μ€€μœΌλ‘œ split !

βœ… 두 가지 ifλ¬Έ

 β‘  이름을 λ³€κ²½ν•˜λŠ” κ²½μš°μΈμ§€ 확인 -> enter, change -> name_list에 μƒˆλ‘œ 이름 μƒμ„±ν•˜κ±°λ‚˜ 이름 λ³€κ²½ν•˜κΈ°

 β‘‘ λ“€μ–΄μ˜€κ±°λ‚˜ λ‚˜κ°€λŠ” κ²½μš°μΈμ§€ 확인 -> enter, leave  -> action_list에 행동 κΈ°λ‘ν•˜κΈ°

 

🎫code_

def solution(records):
    name_list = {}
    action_list = []
    result = []

    for record in records:
        record = record.split(' ')
        action = record[0]
        # print(record)

        # μƒˆλ‘œ 생성 ν•˜κ±°λ‚˜ 이름 λ³€κ²½ν•˜κΈ°
        if action == "Enter" or  action == "Change":
            name_list[record[1]] = record[2] #keyλŠ” id, valueλŠ” λ‹‰λ„€μž„
        # λ“€μ–΄μ˜€κ±°λ‚˜ λ‚˜κ°ˆ λ•Œλ₯Ό κΈ°λ‘ν•˜κΈ°
        if action == "Enter" or  action == "Leave":
            action_list.append((record[1] ,record[0])) # id, 행동

    for id, action in action_list:
        if action == "Enter":
            result.append(name_list[id] + "λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€.")
        else:
            result.append(name_list[id] + "λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€.")
    return result

 

πŸ“Œ description_

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

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

μ‹ μž…μ‚¬μ›μΈ κΉ€ν¬λ£¨λŠ” μΉ΄μΉ΄μ˜€ν†‘ μ˜€ν”ˆ μ±„νŒ…λ°©μ„ κ°œμ„€ν•œ μ‚¬λžŒμ„ μœ„ν•΄, λ‹€μ–‘ν•œ μ‚¬λžŒλ“€μ΄ λ“€μ–΄μ˜€κ³ , λ‚˜κ°€λŠ” 것을 μ§€μΌœλ³Ό 수 μžˆλŠ” κ΄€λ¦¬μžμ°½μ„ λ§Œλ“€κΈ°λ‘œ ν–ˆλ‹€. μ±„νŒ…λ°©μ— λˆ„κ΅°κ°€ λ“€μ–΄μ˜€λ©΄ λ‹€μŒ λ©”μ‹œμ§€κ°€ 좜λ ₯λœλ‹€.

[λ‹‰λ„€μž„]λ‹˜μ΄ λ“€μ–΄μ™”μŠ΅λ‹ˆλ‹€.

μ±„νŒ…λ°©μ—μ„œ λˆ„κ΅°κ°€ λ‚˜κ°€λ©΄ λ‹€μŒ λ©”μ‹œμ§€κ°€ 좜λ ₯λœλ‹€.

[λ‹‰λ„€μž„]λ‹˜μ΄ λ‚˜κ°”μŠ΅λ‹ˆλ‹€.

μ±„νŒ…λ°©μ—μ„œ λ‹‰λ„€μž„μ„ λ³€κ²½ν•˜λŠ” 방법은 λ‹€μŒκ³Ό 같이 두 가지이닀.

  • μ±„νŒ…λ°©μ„ λ‚˜κ°„ ν›„, μƒˆλ‘œμš΄ λ‹‰λ„€μž„μœΌλ‘œ λ‹€μ‹œ λ“€μ–΄κ°„λ‹€.
  • μ±„νŒ…λ°©μ—μ„œ λ‹‰λ„€μž„μ„ λ³€κ²½ν•œλ‹€.

λ‹‰λ„€μž„μ„ λ³€κ²½ν•  λ•ŒλŠ” 기쑴에 μ±„νŒ…λ°©μ— 좜λ ₯λ˜μ–΄ 있던 λ©”μ‹œμ§€μ˜ λ‹‰λ„€μž„λ„ μ „λΆ€ λ³€κ²½λœλ‹€.

예λ₯Ό λ“€μ–΄, μ±„νŒ…λ°©μ— 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 ν•¨μˆ˜λ₯Ό μ™„μ„±ν•˜λΌ.

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

 

문제 좜처 : https://programmers.co.kr/learn/courses/30/lessons/42888

 

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

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

programmers.co.kr

 

λ°˜μ‘ν˜•