반응형
문제 설명
전체 문제는 프로그래머스에 있습니다.
제한 사항
풀이
문제를 본 나의 생각
- 먼저, 닉네임을 변경하기 전 상태에서 입장, 퇴장 문자열 배열을 그대로 만든다.
이때, 닉네임은 변경 가능성이 있기 때문에 *닉네임*으로 구분한다. - 유저 아이디(key): 변경 닉네임(value)을 가진 Map을 만든다.
- 변경 히스토리 Map을 참고하여 최초에 만들어진 문자열 배열을 순환하며 최종적으로 치환해준다.
소스 코드
function solution(record) {
var answer = [], changeMap = new Map(), regx = new RegExp("\\*.*?\\*", "g");
record.forEach((v) => {
const list = v.split(" ");
if(list[0] == "Enter") {
answer.push([`*${list[2]}*님이 들어왔습니다.`, list[1]]);
changeMap.set(list[1], list[2]);
} else if(list[0] == "Change") {
changeMap.set(list[1], list[2]);
} else {
answer.push([`*${changeMap.get(list[1])}*님이 나갔습니다.`, list[1]]);
}
});
answer = answer.map((v) => {
return v[0].replace(regx, changeMap.get(v[1]));
});
return answer;
}
반응형
'개발 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/자바스크립트(JS)] 문자열 압축 (0) | 2022.04.21 |
---|---|
[프로그래머스/자바스크립트(JS)] 실패율 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] [카카오 인턴] 키패드 누르기 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 숫자 문자열과 영단어 (0) | 2022.04.21 |
[프로그래머스/자바스크립트(JS)] 신규 아이디 추천 (1) | 2022.04.21 |