# 🙋🏼 문제 <!-- 문제 이름과 링크를 삽입해 주세요 --> [오픈채팅방](https://school.programmers.co.kr/learn/courses/30/lessons/42888) # 💡 풀이 쉬워보이는데 생각보다 품이 많이 든 문제! record의 값을 전부 확인한 후 (id 체크), 출력을 위해서 다시 id와 leave / enter 체크를 해줘야 한다. ~물론 실제라면 UI에서 일부만 확인해서 바꿔줘야겠지만.. (어케함!)~ https://github.com/chaentopia/coding_test_practice/blob/05f2b45fe6bc40c19c2f79c962d1bd976285de8e/coding_test_practice/240702_42888.swift#L11-L15 enter, leave 시의 텍스트를 따로 저장해주었고, member dictionary에는 id와 닉네임을 저장할 수 있도록 했다. arr는 두번째 단계에서 id와 leave / enter 확인해줄 때 사용해주기 위함이고, result는 결과 array https://github.com/chaentopia/coding_test_practice/blob/05f2b45fe6bc40c19c2f79c962d1bd976285de8e/coding_test_practice/240702_42888.swift#L17-L30 record의 문장을 하나씩 보며 space를 기준으로 나눠주었다. Enter / Leave / Change로 나뉘게 되는 text[0]을 switch - case 문으로 나눴다. * Enter 시, id에 해당하는 text[1]와 닉네임에 해당하는 text[2]를 member dictionary에 넣었다. 그리고 id와 enter 텍스트를 arr에 추가했다. (생각해 보니까 굳이 enter 텍스트를 여기서 넣었어야 하나 싶다.. 걍 result 단계에서 넣어줄걸..) * Leave 시, id와 leave 텍스트를 arr에 추가했다. member를 건들지 않은 것은 여기서는 id가 바뀌지 않고, 앞선 Enter가 없다면 Leave가 발생할 수 없는데 Enter에서 이미 member를 건드리기 때문! * Change 시, result에 출력되는 것이 없기 때문에 arr에 추가할 필요는 없고, 이름이 바뀌었을 때 member의 id를 확인해서 바꿔줘야 하기 때문에 member id에 이름을 교체해주었다. https://github.com/chaentopia/coding_test_practice/blob/05f2b45fe6bc40c19c2f79c962d1bd976285de8e/coding_test_practice/240702_42888.swift#L32-L38 arr를 forEach로 확인해 주면서, result에 해당 id에 해당하는 이름과 enter / leave 텍스트를 추가해주었다. 그리고 마지막에 `return result`로 답 반환 처음 채점 때 if let 문 안 써서 테스트 케이스 하나가 날라감.. ~상여자식 코드 (강제 언래핑) 쓰려다가 말았다 ㅋㅋ;;~