프로그래머스 | 오픈채팅방_JS
2354 단어 programmersalgorithmalgorithm
난이도 : Level. 2
언어 : Javascript
출제 내역 : 2019 KAKAO BLIND RECRUITMENT
❓ Question
오픈 채팅방 메세지를 출력하자
📝 My Solution
전체 풀이 코드 👈🏻 클릭시 Github로 이동
function solution(record) {
var answer = [];
const strArr = [];
const uidArr = [];
const idArr = [];
const idObj = {};
for (let i = 0; i<record.length; i++) {
let split1 = record[i].split(',');
let split2 = split1[0].split(' ');
strArr.push(split2[0]);
uidArr.push(split2[1])
idArr.push(split2[2])
}
for (let i = 0; i<uidArr.length; i++) {
if (idArr[i] !== null) {
idObj[uidArr[i]] = idArr[i];
}
}
메세지, 아이디, 이름을 담을 배열에 해당하는 값을 넣어주고,
객체를 이용해 아이디에 따른 이름을 넣어줍니다.
for (let i = 0; i<strArr.length; i++) {
if (strArr[i] === 'Enter') {
answer.push(idObj[uidArr[i]]+"님이 들어왔습니다.")
} else if (strArr[i] === "Leave") {
answer.push(idObj[uidArr[i]]+"님이 나갔습니다.")
}
}
return answer;
}
그 뒤, 명령어에 따른 이름 값과 메세지를 출력해 정답 배열에 넣어줍니다.
하지만 정답으로는 인정 되진 않았습니다.
📝 Another Solution
function solution(record) {
let answer = [];
let newArr = record.map((str) => str.split(" "));
let nickNameSet = {};
for (let i = 0; i < newArr.length; i++) {
if (newArr[i].length === 3) {
nickNameSet[newArr[i][1]] = newArr[i][2];
}
}
for (let i = 0; i < newArr.length; i++) {
if (newArr[i][0] === "Enter") {
answer.push(nickNameSet[newArr[i][1]] + "님이 들어왔습니다.");
} else if (newArr[i][0] === "Leave") {
answer.push(nickNameSet[newArr[i][1]] + "님이 나갔습니다.");
}
}
return answer;
};
비슷해 보이지만 다른 방식으로 진행 되는데,
정답으로 처리가 되어서 좋은 것 같습니다.
결과
참고 블로그
Author And Source
이 문제에 관하여(프로그래머스 | 오픈채팅방_JS), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sstaar91/Algorithm-Programmers-OpenChat저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)