Algorithm/Programmers
[Programmers][Lv.2] 오픈채팅방
so-so
2022. 8. 9. 22:06
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡IDEA
문자열, 배열, 딕셔너리를 사용해서 푸는 문제이다.
문제를 푸는 데 필요한 정보는 들어왔는지 나갔는지, 아이디와 닉네임 정보, 어떤 아이디 순서로 들어왔는지 세가지이다.
record의 문자열을 하나씩 확인할건데, 각 문자열을 띄어쓰기로 구분해서 뜯어보았다.
0번째 값에는 Enter, Leave, Change 세가지 경우가 들어오는데 이에 따라서 해줘야 할 일이 조금 다르다. 먼저 들어오거나 나갈 때는 이를 표기해주고 아이디 순서를 기억해야 하고, 들어오거나 변경하는 경우에는 닉네임 딕셔너리를 갱신해줘야 한다.
이렇게 저장해둔 값을 다시 불러와서 기억한 아이디 순서대로 갱신된 닉네임 정보에 따라 ㅇㅇ님이 들어왔습니다. 식으로 출력해준다.
아이디를 기억하는 배열을 사용하지 않을 수 있을 것 같아서 시도해본 코드는 통과는 했으나 성능에 크게 다른 점이 없는 것 같았다. 일단 두 코드 모두 올려둔다.
📌CODE
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
answer = []
nick = {}
id = []
for rec in record:
arr = list(rec.split())
if arr[0] == 'Enter':
answer.append(arr[2]+"Enter")
nick[arr[1]] = arr[2]
id.append(arr[1])
elif arr[0] == 'Leave':
answer.append(nick[arr[1]]+"Leave")
id.append(arr[1])
else:
nick[arr[1]] = arr[2
for i in range(len(id)):
if answer[i][-5:] == "Enter":
answer[i] = nick[id[i]]+"님이 들어왔습니다."
else:
answer[i] = nick[id[i]]+"님이 나갔습니다."
print(answer)
record = ["Enter uid1234 Muzi", "Enter uid4567 Prodo","Leave uid1234","Enter uid1234 Prodo","Change uid4567 Ryan"]
answer = []
nick = {}
for rec in record:
arr = list(rec.split())
if arr[0] == 'Enter':
answer.append(arr[1]+" Enter")
nick[arr[1]] = arr[2]
elif arr[0] == 'Leave':
answer.append(arr[1]+" Leave")
else:
nick[arr[1]] = arr[2]
for i in range(len(answer)):
id, t = answer[i].split()
if t == "Enter":
answer[i] = nick[id]+"님이 들어왔습니다."
else:
answer[i] = nick[id]+"님이 나갔습니다."
print(answer)
반응형