๋ฌธ์ ์ค๋ช
์นด์นด์คํก ์คํ์ฑํ ๋ฐฉ์์๋ ์น๊ตฌ๊ฐ ์๋ ์ฌ๋๋ค๊ณผ ๋ํ๋ฅผ ํ ์ ์๋๋ฐ, ๋ณธ๋ ๋๋ค์์ด ์๋ ๊ฐ์์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์ฑํ ๋ฐฉ์ ๋ค์ด๊ฐ ์ ์๋ค. ์ ์ ์ฌ์์ธ ๊นํฌ๋ฃจ๋ ์นด์นด์คํก ์คํ ์ฑํ ๋ฐฉ์ ๊ฐ์คํ ์ฌ๋์ ์ํด, ๋ค์ํ ์ฌ๋๋ค์ด ๋ค์ด์ค๊ณ , ๋๊ฐ๋ ๊ฒ์ ์ง์ผ๋ณผ ์ ์๋ ๊ด๋ฆฌ์์ฐฝ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ฑํ ๋ฐฉ์ ๋๊ตฐ๊ฐ ๋ค์ด์ค๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ ๋ฐฉ์์ ๋๊ตฐ๊ฐ ๋๊ฐ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋๊ฐ์ต๋๋ค."
์ฑํ ๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง์ด๋ค.
- ์ฑํ ๋ฐฉ์ ๋๊ฐ ํ, ์๋ก์ด ๋๋ค์์ผ๋ก ๋ค์ ๋ค์ด๊ฐ๋ค.
- ์ฑํ ๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ค.
๋๋ค์์ ๋ณ๊ฒฝํ ๋๋ ๊ธฐ์กด์ ์ฑํ ๋ฐฉ์ ์ถ๋ ฅ๋์ด ์๋ ๋ฉ์์ง์ ๋๋ค์๋ ์ ๋ถ ๋ณ๊ฒฝ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฑํ ๋ฐฉ์ "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 ์ดํ์ด๋ค.
- ์ฑํ ๋ฐฉ์์ ๋๊ฐ ์ ์ ๊ฐ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฑ ์๋ชป ๋ ์ ๋ ฅ์ ์ฃผ์ด์ง์ง ์๋๋ค.
์ ์ถ๋ ฅ ์
record | result |
["Enter uid1234 Muzi", "Enter uid4567 Prodo", "Leave uid1234", "Enter uid1234 Prodo", "Change uid4567 Ryan"] |
["Prodo๋์ด ๋ค์ด์์ต๋๋ค.", "Ryan๋์ด ๋ค์ด์์ต๋๋ค.", "Prodo๋์ด ๋๊ฐ์ต๋๋ค.", "Prodo๋์ด ๋ค์ด์์ต๋๋ค."] |
๋์ ์๋ฃจ์ (์ ๊ทผ ๋ฐฉ๋ฒ)
๋ฌธ์ ๋ฅผ ๋ณด์๋ง์ ๋ ์๊ฐ์ "์ด์ฐจํผ ๋ง์ง๋ง ๋ณ๊ฒฝ ๊ธฐ๋ก๋ง ์ค์ํ๋ค"๋ ์ ์ด์๋ค. ๊ทธ๋์ ๊ฐ uid์ ๋ง์ง๋ง ๊ธฐ๋ก๋ง ์ฐพ์๋ด์ ๋์ผํ ๊ฐ์ ๊ฐ์ง ๋ฌธ์์ด์ ์ด๋ฆ์ ์ ๋ถ ๋ณ๊ฒฝํด์ฃผ๋ ค ํ์์ผ๋, ์ฌ๊ธฐ์ ๋์น ์ ์ ์ต์ด ์ด๋ฆ ์์ฑ ์ดํ ๋ฐฉ์ ๋๊ฐ๊ธฐ๋ง ํ๊ณ ๋ค๋ฅธ ๊ธฐ๋ก์ด ๋จ์ง ์์ ์ ์ ์ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ๊ณค๋ํ๋ค๋ ์ ์ด์๋ค.
๊ทธ๋์ ์์์ ์ด๋ ๊ฐ์ฅ ์ ํํ ๋ฐฉ๋ฒ์ผ๋ก, ์์ฐจ์ ์ผ๋ก "์ ์ฅ" ๋๋ "๋ณ๊ฒฝ" ์ด ๋ฐ์ํ ์ ํด๋น id ๋ฅผ key ๋ก ๋ด์๋์ dict ์ ๊ฐ์ ๋ณ๊ฒฝํด์ฃผ์๋ค. ๋ฐ๋ผ์ id-์ด๋ฆ์ ๊ณ์ ๋ฎ์ด์์๊ฐ๋ฉฐ ๋ ์ฝ๋๋ฅผ ์ํํ ๋ค, ๋ ์ฝ๋์ action ์ ํ (Enter, Leave, Change) ์ ๋ง์ถฐ ์ต์ข ์ ๋ฐ์ดํธ ๋ ์ด๋ฆ๊ณผ ๋งค์นญํ์ฌ answer ๋ฐฐ์ด์ ๋ด์์ฃผ์๋ค.
def solution(record):
log = {}
for i in range(0, len(record)):
action = record[i].split(' ')[0]
uid = record[i].split(' ')[1]
if action != "Leave":
name = record[i].split(' ')[2]
log[uid] = name
answer = []
for value in record:
if value.startswith("E"):
answer.append(log[value.split(' ')[1]] + "๋์ด ๋ค์ด์์ต๋๋ค.")
elif value.startswith("L"):
answer.append(log[value.split(' ')[1]] + "๋์ด ๋๊ฐ์ต๋๋ค.")
return answer
'๐ป DEV > ใด problems' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Summer/Winter Coding(2019) : ๋ฉ์ฉกํ ์ฌ๊ฐํ (0) | 2021.07.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊น์ด/๋๋น ์ฐ์ ํ์(DFS/BFS) : ํ๊ฒ ๋๋ฒ (0) | 2021.07.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] 2017 ํ์คํ์ด: ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (0) | 2021.07.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ทธ๋ฆฌ๋(Greedy) : ์ฒด์ก๋ณต (0) | 2021.07.07 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์คํ/ํ(Stack/Queue) : ์ฃผ์๊ฐ๊ฒฉ (0) | 2021.05.07 |
๋๊ธ