오픈 채팅방
닉네임 변경만 제대로 체크해주면 큰 어려움은 없는 문제였습니다. 닉네임 변경은 Map
에서 가지고 있다가 들어올때, 변경할때만 해당 아이디에 대한 이름을 바꿔주면 됩니다. 사실 가장 뒤에 있는 것(가장 최신의 것)만 기억하면 되기 때문에 매번 들어올 때마다 Map에 넣기만 하면됩니다. 만약 있는 값이라면 새로운 값을 덮어쓰게 되고, 없으면 새로 넣어질 것이니까요.
package p42888;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
class Solution {
public String[] solution(String[] record) {
List<String> answer = new ArrayList<>();
Map<String, String> map = init(record);
print(answer, record, map);
return answer.toArray(new String[answer.size()]);
}
private void print(List<String> answer, String[] record, Map<String, String> map) {
for (int i = 0; i < record.length; i++) {
String[] split = record[i].split(" ");
String command = split[0];
String userId = split[1];
if (command.equals("Enter")) {
answer.add(map.get(userId) + "님이 들어왔습니다.");
}
if (command.equals("Leave")) {
answer.add(map.get(userId) + "님이 나갔습니다.");
}
}
}
public Map<String, String> init(String[] record) {
Map<String, String> map = new HashMap<>();
for (String s : record) {
String[] split = s.split(" ");
String command = split[0];
String userId = split[1];
if (command.equals("Enter") || command.equals("Change")) {
String name = split[2];
map.put(userId, name);
}
}
return map;
}
}
init()하는 부분에서 Map을 만들고 print() 에서는 출력값을 넣었습니다.
'Algorithm > problem solving' 카테고리의 다른 글
Today's Algorithm(2019-03-12) (0) | 2019.03.13 |
---|---|
Today's Algorithm(2019-03-10) (0) | 2019.03.10 |
Today's Algorithm(2019-02-22) (0) | 2019.02.22 |
Today's Algorithm(2019-02-14) (0) | 2019.02.14 |
Today's Algorithm(2019-02-10) (0) | 2019.02.10 |