1) ๋ฌธ์ ์ค๋ช
์นด์นด์คํก ์คํ์ฑํ
๋ฐฉ์์๋ ์น๊ตฌ๊ฐ ์๋ ์ฌ๋๋ค๊ณผ ๋ํ๋ฅผ ํ ์ ์๋๋ฐ, ๋ณธ๋ ๋๋ค์์ด ์๋ ๊ฐ์์ ๋๋ค์์ ์ฌ์ฉํ์ฌ ์ฑํ
๋ฐฉ์ ๋ค์ด๊ฐ ์ ์๋ค.
์ ์
์ฌ์์ธ ๊นํฌ๋ฃจ๋ ์นด์นด์คํก ์คํ ์ฑํ
๋ฐฉ์ ๊ฐ์คํ ์ฌ๋์ ์ํด, ๋ค์ํ ์ฌ๋๋ค์ด ๋ค์ด์ค๊ณ , ๋๊ฐ๋ ๊ฒ์ ์ง์ผ๋ณผ ์ ์๋ ๊ด๋ฆฌ์์ฐฝ์ ๋ง๋ค๊ธฐ๋ก ํ๋ค. ์ฑํ
๋ฐฉ์ ๋๊ตฐ๊ฐ ๋ค์ด์ค๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋ค์ด์์ต๋๋ค."
์ฑํ
๋ฐฉ์์ ๋๊ตฐ๊ฐ ๋๊ฐ๋ฉด ๋ค์ ๋ฉ์์ง๊ฐ ์ถ๋ ฅ๋๋ค.
"[๋๋ค์]๋์ด ๋๊ฐ์ต๋๋ค."
์ฑํ
๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ๋ ๊ฐ์ง์ด๋ค.
์ฑํ
๋ฐฉ์ ๋๊ฐ ํ, ์๋ก์ด ๋๋ค์์ผ๋ก ๋ค์ ๋ค์ด๊ฐ๋ค.
์ฑํ
๋ฐฉ์์ ๋๋ค์์ ๋ณ๊ฒฝํ๋ค.
๋๋ค์์ ๋ณ๊ฒฝํ ๋๋ ๊ธฐ์กด์ ์ฑํ
๋ฐฉ์ ์ถ๋ ฅ๋์ด ์๋ ๋ฉ์์ง์ ๋๋ค์๋ ์ ๋ถ ๋ณ๊ฒฝ๋๋ค.
์๋ฅผ ๋ค์ด, ์ฑํ
๋ฐฉ์ "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 ํจ์๋ฅผ ์์ฑํ๋ผ.
2) ์ ํ ์ฌํญ
- record๋ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์์ด์ด ๋ด๊ธด ๋ฐฐ์ด์ด๋ฉฐ, ๊ธธ์ด๋ 1 ์ด์ 100,000 ์ดํ์ด๋ค.
- ๋ค์์ record์ ๋ด๊ธด ๋ฌธ์์ด์ ๋ํ ์ค๋ช ์ด๋ค.
- ๋ชจ๋ ์ ์ ๋ [์ ์ ์์ด๋]๋ก ๊ตฌ๋ถํ๋ค.
- [์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ [๋๋ค์]์ผ๋ก ์ฑํ ๋ฐฉ์ ์ ์ฅ - "Enter [์ ์ ์์ด๋] [๋๋ค์]" (ex. "Enter uid1234 Muzi")
- [์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ ์ฑํ ๋ฐฉ์์ ํด์ฅ - "Leave [์ ์ ์์ด๋]" (ex. "Leave uid1234")
- [์ ์ ์์ด๋] ์ฌ์ฉ์๊ฐ ๋๋ค์์ [๋๋ค์]์ผ๋ก ๋ณ๊ฒฝ - "Change [์ ์ ์์ด๋] [๋๋ค์]" (ex. "Change uid1234 Muzi")
- ์ฒซ ๋จ์ด๋ Enter, Leave, Change ์ค ํ๋์ด๋ค.
- ๊ฐ ๋จ์ด๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด ์์ผ๋ฉฐ, ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์, ์ซ์๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค.
- ์ ์ ์์ด๋์ ๋๋ค์์ ์ํ๋ฒณ ๋๋ฌธ์, ์๋ฌธ์๋ฅผ ๊ตฌ๋ณํ๋ค.
- ์ ์ ์์ด๋์ ๋๋ค์์ ๊ธธ์ด๋ 1 ์ด์ 10 ์ดํ์ด๋ค.
- ์ฑํ ๋ฐฉ์์ ๋๊ฐ ์ ์ ๊ฐ ๋๋ค์์ ๋ณ๊ฒฝํ๋ ๋ฑ ์๋ชป ๋ ์ ๋ ฅ์ ์ฃผ์ด์ง์ง ์๋๋ค.
3) ์ ์ถ๋ ฅ ์์
record result
["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"] ["Prodo๋์ด ๋ค์ด์์ต๋๋ค.", "Ryan๋์ด ๋ค์ด์์ต๋๋ค.", "Prodo๋์ด ๋๊ฐ์ต๋๋ค.", "Prodo๋์ด ๋ค์ด์์ต๋๋ค."]
4) ์ ์ถ๋ ฅ ์์ ์ค๋ช
- ์์
5) ํ์ด
def solution(record):
# answer ๋ฆฌ์คํธ ๋ฐ nameMap ๋์
๋๋ฆฌ ์ ์ธ
answer = []
nameMap = dict()
# nameMap์ key๊ฐ์ id, Value๋ nickName
# nickName ๊ฐ์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ์์ ํ ๊ฐ์ ์ ์ฅ
for s in record:
L = s.split()
if L[0] == "Leave":
continue
nameMap[L[1]] = L[2]
# ๋ค์ ํ๋ฒ record ๋ฐฐ์ด๋งํผ ๋ฐ๋ณต๋ฌธ ๋๋ฉด์
# Enter, Leave์ ํํด์ nameMap์ ์ ์ฅ๋ ๋๋ค์์ผ๋ก
# answer ๋ฐฐ์ด์ ์ถ๊ฐํ๋ค.
for s in record:
L = s.split()
if L[0] == "Enter":
answer.append(nameMap[L[1]] + "๋์ด ๋ค์ด์์ต๋๋ค.")
elif L[0] == "Leave":
answer.append(nameMap[L[1]] + "๋์ด ๋๊ฐ์ต๋๋ค.")
return answer
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ
'๐ฏ Coding Test > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (Lv 1) - ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (1) | 2023.08.22 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์ฐ์ ๋ถ๋ถ ์์ด ํฉ์ ๊ฐ์ (1) | 2023.08.22 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ํ๋ ฌ์ ๊ณฑ์ (1) | 2023.08.21 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (1) | 2023.08.21 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ตฌ๋ช ๋ณดํธ (1) | 2023.08.17 |