[프로그래머스] 오픈채팅방 (자바스크립트/js/javascript)
2021. 6. 24. 14:44ㆍFront-end/알고리즘
728x90
반응형
문제출처: https://programmers.co.kr/learn/courses/30/lessons/42888
문제를 풀기 위한 아이디어
문제 설명은 장황하지만 결국 포인트는, 닉네임을 먼저 확정짓고 그 다음에 맞는 유저 아이디의 닉네임을 불러오기만 하면 된다.
모든 record를 반복문으로 돌며 계속해서 유저 아이디에 맞는 닉네임을 갱신해주어서 먼저 닉네임을 확정짓는다.
이 경우 Leave인 경우는 닉네임이 바뀌지 않으므로 신경쓸 필요가 없다.
또 record를 한 번 더 반복문으로 돌면서 Enter와 Leave인 경우에만 맞는 닉네임을 불러와서 result에 넣어주면 된다. Change인 경우에는 result에 포함될 필요가 없기 때문에 처음에 닉네임 갱신할 때에만 봐주면 된다.
중복을 방지하고 키에 맞는 값을 저장하기 위해 map을 사용하면 된다.
function solution(record) {
const answer = [];
const map = new Map();
for (let i = 0; i < record.length; i++) {
const target = record[i].split(" ");
if (target[0] === "Enter" || target[0] === "Change") {
map.set(target[1], target[2]);
}
}
for (let i = 0; i < record.length; i++) {
const target = record[i].split(" ");
if (target[0] === "Enter") {
const string = map.get(target[1]) + "님이 들어왔습니다.";
answer.push(string);
} else if (target[0] === "Leave") {
const string = map.get(target[1]) + "님이 나갔습니다.";
answer.push(string);
}
}
return answer;
}
const record = [
"Enter uid1234 Muzi",
"Enter uid4567 Prodo",
"Leave uid1234",
"Enter uid1234 Prodo",
"Change uid4567 Ryan",
];
console.log(solution(record));
728x90
반응형
'Front-end > 알고리즘' 카테고리의 다른 글
[프로그래머스] 여행경로 (자바스크립트/javascript/js) (0) | 2021.06.28 |
---|---|
[프로그래머스] 짝지어 제거하기 (자바스크립트/javascript/js) (0) | 2021.06.24 |
[프로그래머스] 124 나라의 숫자 (자바스크립트/javascript/js) (0) | 2021.06.24 |
[프로그래머스] 문자열 압축 (자바스크립트/ javascript/ js) (0) | 2021.06.23 |
[프로그래머스] 구명보트 (자바스크립트/ javascript/ js) (0) | 2021.06.23 |