알고리즘 공부

[프로그래머스] 오픈채팅방 - java

철매존 2021. 10. 21. 16:21
728x90

문제 설명

1. 배열에 id, 닉네임, 상태가 주어진다. 상태는 Enter, Leaver, Change이다.

2. Change를 사용하면 그 id를 사용하는 사람의 닉네임이 바뀐다.

3. 사람이 들어오고 나가는 결과를 바뀐 최종 닉네임에 따라 return 하면 된다.

풀이 과정

 1. HashMap과 ArrayList를 통해 간단히 구현할 수 있다.

 2. 해쉬맵에는 그 사람의 id를 키값, 닉네임을 value값으로 한다. 이렇게 하면 id의 value가 바뀔 때 마다 변경 하능하다.

 3. ArrayList에는 그 사람의 id와 출입내역을 저장한다. 그러면 그 id의 사람이 나가거나 들어온 것들을 저장 가능하다.

 4. 그럼 상태에 따라 변경하면 된다.

1) 입장한 경우 - HashMap에 id와 닉네임을 넣어준다. 왜냐면 처음에 들어와야 변경하든 나가든 할 수 있으니까.

   이후 arraylist에 class로 두 값을 (id, 님이 들어왔습니다.) 이렇게 넣어준다.

2) 나간 경우    - HashMap은 변경할 필요가 없다. 새로운 사람이 나간것도 아니고 닉네임이 변경된것도 아니니까.

   ArrayList에 class로 두 값을 (id, 님이 나갔습니다.) 이렇게 넣어준다.

3) 닉네임 변경 - HashMap에 그 아이가 변경되었다는 것을 알려주면 된다.

 

워낙 간단한 문제라 따로 설명할 내용은 없을 듯 하다 

코드