https://school.programmers.co.kr/learn/courses/30/lessons/42888
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
소스코드
import java.util.*;
class Solution {
public String[] solution(String[] record) {
HashMap<String, String> map = new HashMap<>();
List<String> list = new ArrayList<>();
List<String> resultList = new ArrayList<>();
for(String str : record) {
String[] strs = str.split(" ");
if(strs[0].equals("Enter")) {
list.add(strs[1] + "님이 들어왔습니다.");
map.put(strs[1], strs[2]);
}
else if(strs[0].equals("Leave")) list.add(strs[1] + "님이 나갔습니다.");
else map.put(strs[1], strs[2]);
}
for (String str : list) {
String s = str.split(" ")[0];
String id = s.substring(0, s.length() - 2);
resultList.add(str.replace(id, map.get(id)));
}
return resultList.toArray(new String[0]);
}
}
해결방법
단순히 오픈채팅방을 들어오고 나가고를 콘솔에 출력하면 되는 문제이다. 유저 아이디로 유저를 구분할 수 있고 유저 닉네임은 중복을 허용한다. 유저에 대한 정보를 HashMap<유저 아이디,유저 닉네임>에다 저장하였다. 입/퇴장 시 닉네임 위치에 아이디를 넣어 문자열을 만들어주었다. 이렇게 만들어진 문자열은 마지막에 replace()를 이용하여 아이디를 닉네임으로 대체시키면 된다. 그러기 위해서 Change 입력이 들어올 때 HashMap에 저장된 유저의 정보만 잘 갱신시켜주면 된다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
게임 맵 최단거리 (0) | 2023.06.16 |
---|---|
입국심사 (0) | 2023.06.15 |
디펜스 게임 (0) | 2023.06.14 |
뒤에 있는 큰 수 찾기 (0) | 2023.04.10 |
롤케이크 자르기 (0) | 2023.03.24 |