프로그래머스 | 오픈채팅방_JS

난이도 : 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;
};

비슷해 보이지만 다른 방식으로 진행 되는데,
정답으로 처리가 되어서 좋은 것 같습니다.

결과


참고 블로그

좋은 웹페이지 즐겨찾기