728x90
문제
https://programmers.co.kr/learn/courses/30/lessons/42888?language=javascript
코드
function solution(record) {
let answer = [];
let user = {}; //userid, nickname을 담을 user객체
//message[0] = message, message[1] = userid, message[2] = nickname
for (let i=0; i<record.length; i++) {
let message = record[i].split(" "); //record의 각 문장을 단어별로 잘라서 배열에 담기
if (message[0] === "Enter" || message[0] === "Change") { //다시들어오는 경우라도 이 코드를 통해 닉네임이 새로 갱신됨
user[message[1]] = message[2]; //userid: nicknmae <<이렇게 저장됨
}
}
for (let i=0; i<record.length; i++) {
let message = record[i].split(" ");
if (message[0] === "Enter") { //객체에 저장된 userid의 nickname을 불러와서 출력
answer.push(`${user[message[1]]}님이 들어왔습니다.`);
}
else if (message[0] === "Leave") {
answer.push(`${user[message[1]]}님이 나갔습니다.`);
}
}
return answer;
}
후기
- 처음에 문제 접근을 잘못해서 한참을 헤맸다. 문제는 결국 최종적으로 찍히는 메시지만 출력하면 되는데 한명 한명 들어오고 나갈때마다 메시지를 출력해서 수정을 해나가는 방식으로 처음에 로직을 짰기 때문에 다시 들어오는 경우에 닉네임을 수정하는 과정이 까다로웠다
- 결국 문제는 마지막에 메시지를 출력하면 되는 것이니 출력은 가장 나중으로 두고 풀었다. 객체와 배열의 성질을 잘 이용해서 userid, nickname의 정보를 담고 update도 동시에 가능하게 했다
- 로직을 수정하고 나서는 꽤 수월하게 풀었지만 다른 분들의 풀이를 보니 map을 사용하여 푼 풀이가 많았다. 나는 아직 map에 익숙하지 않아서 그런지 봐도 이해가 잘 안됐다ㅜ.. 문법 공부를 좀 더 해야겠다!
'알고리즘 > Programmers' 카테고리의 다른 글
[Programmers] 예산 / JavaScript (0) | 2022.01.12 |
---|---|
[Programmers] 같은 숫자는 싫어 / JavaScript (0) | 2022.01.12 |
[Programmers] 실패율 / JavaScript (0) | 2022.01.11 |
[Programmers] 두 개 뽑아서 더하기 / JavaScript (0) | 2022.01.08 |
[Programmers] 124 나라의 숫자 / JavaScript (0) | 2022.01.08 |