[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ / ํŒŒ์ด์ฌ / python / ๋”•์…”๋„ˆ๋ฆฌ ๋ฐฐ์—ด
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉ / ํŒŒ์ด์ฌ / python / ๋”•์…”๋„ˆ๋ฆฌ ๋ฐฐ์—ด

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

 

๋ฐ˜์‘ํ˜•