[문제설명]
- 들어오고 나갈때 "[닉네임]님이 들어왔습니다." / "[닉네임]님이 나갔습니다." 라고 출력된다.
- 닉변하려면 채팅방 나간후 새로운 닉네임으로 다시 들어가거나 채팅방에서 닉네임을 변경하는 방법 두개가 있다.
- 닉변하면 기존 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경됨.
- 중복닉네임 허용됨.
- 채팅방에 오고가거나 닉네임을 변경한 기록이 담긴 record가 매개변수로 주어질 때, 최종적으로 방을 개설한 사람이 보게되는 메세지를 문자열 배열형태로 리턴.
- 모든 유저는 id로 구분. "Enter [id] [name]" "Leave [id] [name]" "Change [id] [name]" 세가지 경우의 수 있다.
- 각 단어는 공백으로 구분되어 있으며, 알파벳 대문자, 소문자, 숫자로만 이루어져 있다.
- id 랑 name은 대소문자 구분함.
- Id 랑 name 길이는 1~10
[내 풀이]
- 시작 단어 Enter, Leave, Change
- change 들을 일단 먼저 모아서 User_id별로 구분한다음에 가장 마지막 Change 기록들로 전부 맞춰놓으려 했는데.. 바꾼뒤에 나갔다가 또 바꾸고 들어오는 경우가 문제가 생김.
- Leave는 신경쓰지 말고 Enter이랑 Change일때 User_id를 검색 한다음에 tmp_name을 바꾸도록 하는거로.
다 했다고 생각했는데 역시 O(n^2) 은 통과 못하네요 ㅎㅎ.. 샤워하면서 다시 생각해보겠습니다.
Dict로 만들어서 id랑 name 넣으면 좀 더 쉽게 풀 수 있는 방법이 있었네요.. 이거저거 시도하면서 반쪽짜리 성공한뒤 구글링해서 찾았습니다.
기본 개념은 그대로지만 사전으로 바꿔서 했다는점! 꼭 기억.
'프로그래머스 코딩테스트 연습 Lv1' 카테고리의 다른 글
Lv1 - 로또의 최고 순위와 최저 순위 (0) | 2021.09.02 |
---|---|
Lv2 - 기능개발 (0) | 2021.09.02 |
프로그래머스 코딩테스트 연습 - 모든문제 Lv1 [ 숫자 문자열과 영단어] (0) | 2021.07.11 |
프로그래머스 코딩테스트 연습 - 모든문제 Lv1 [ K번째수 ] (0) | 2021.06.24 |
프로그래머스 코딩테스트 연습 - 모든문제 Lv1 [ 크레인 인형뽑기 게임] (0) | 2021.06.12 |