[프로그래머스] 오픈채팅방(42888)

lhs's avatar
Dec 01, 2024
[프로그래머스] 오픈채팅방(42888)
 

1. 문제 풀이 아이디어

  • ListMap을 사용하여 문제를 해결할 수 있다.

2. 나의 정답 코드

class Solution { public String[] solution(String[] record) { List<String> log = new ArrayList<>(); List<String> uid = new ArrayList<>(); Map<String, String> map = new HashMap<>(); for (String s : record) { String[] ss = s.split(" "); if (ss[0].equals("Enter")) { uid.add(ss[1]); log.add("님이 들어왔습니다."); map.put(ss[1], ss[2]); } else if (ss[0].equals("Leave")) { uid.add(ss[1]); log.add("님이 나갔습니다."); } else if (ss[0].equals("Change")) { map.put(ss[1], ss[2]); } } for (int i = 0; i < log.size(); i++) { log.set(i, map.get(uid.get(i)) + log.get(i)); } return log.toArray(new String[0]); } }

3. 정리

  • 입력을 처리할 때, 문자열을 분리해 uiduid 리스트에, 로그 메시지는 log 리스트에 저장한다. 닉네임은 Mapuid와 함께 저장한다.
  • 모든 입력을 처리한 후, log 리스트를 순회하며 각 로그 앞에 uid에 대응하는 닉네임을 map에서 가져와 추가한다.
  • 최종적으로 log 리스트를 배열로 변환하여 반환한다.
Share article

LHS's Study Space