🔗 문제 링크
[프로그래머스] 오픈채팅방 / 2019 KAKAO BLIND RECRUITMENT
📝 풀이 과정
한 유저는 유저 아이디 하나와 닉네임을 여러 개 가질 수 있고, 제일 마지막으로 지정한 닉네임을 가져야한다. 때문에 유저 아이디를 Key로 가지면서 닉네임을 Value 값으로 갖는 Map을 만들어주었다.
반복문을 돌며 새로 들어오거나 닉네임을 변경할 때마다 Map에 put을 해주면 자동으로 값이 덮어씌워지기 때문에 별도의 처리를 하지않고 넣어주었다.
모든 닉네임 처리가 끝났으면 다시 한 번 반복문을 돌며 메시지를 리스트에 넣어주었다.
💻 코드
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public String[] solution(String[] record) {
Map<String, String> map = new HashMap<>();
List<String[]> splitRecord = Arrays.stream(record).map(r -> r.split(" ")).collect(Collectors.toList());
for (String[] r : splitRecord) {
if (r[0].equals("Enter") || r[0].equals("Change")) {
map.put(r[1], r[2]);
}
}
List<String> result = new ArrayList<>();
for (String[] r : splitRecord) {
switch (r[0]) {
case "Enter":
result.add(String.format("%s님이 들어왔습니다.", map.get(r[1])));
break;
case "Leave":
result.add(String.format("%s님이 나갔습니다.", map.get(r[1])));
break;
}
}
return result.toArray(new String[0]);
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 매칭점수 / 2019 KAKAO BLIND RECRUITMENT - JAVA (0) | 2021.03.01 |
---|---|
[프로그래머스] 후보키 / 2019 KAKAO BLIND RECRUITMENT - JAVA (1) | 2021.03.01 |
[프로그래머스] 광고 삽입 / 2021 KAKAO BLIND RECRUITMENT - JAVA (0) | 2021.02.10 |
[프로그래머스] 합승 택시 요금 / 2021 KAKAO BLIND RECRUITMENT - JAVA (0) | 2021.02.10 |
[프로그래머스] 순위 검색 / 2021 KAKAO BLIND RECRUITMENT - JAVA (1) | 2021.02.09 |