이번 글은 아래 링크의 글들을 참조하여 작성하였습니다.
https://tech.kakao.com/2018/09/21/kakao-blind-recruitment-for2019-round-1/
2019 카카오 신입 공채 1차 코딩 테스트 문제 해설
작년에 이어 올해도 블라인드 전형으로 카카오 개발 신입 공채가 시작되었습니다! 그 첫 번째 관문으로 1차 온라인 코딩 테스트가 지난 9월 15일(토) 오후 2시부터 7시까지 5시간 동안 치러졌는데
tech.kakao.com
- 블로그 포스팅
이번 문제에 대한 자세한 사항은 다음 링크를 참조하길 바란다.
처음에는 새로 생성한 객체에 for문으로써 record의 정보를 모두 담아 처리해보려고 했으나 잘 되지 않았고 다른 사람들의 코드를 참고했다. 핵심은 for문을 돌면서 id값에 상응하는 nickname을 갱신해줘야 한다는 점이다. 이 점을 모르고 'Change'가 나오면 nickname이 갱신되는 식으로 풀려고 하니까 안 되었다. 아직까지 JavaScript가 돌아가는 기본 원리조차 모르는 바보이다..ㅜㅜ
Solutions
Solution 1.
function solution(record) { /* Map Ver. */ const answer = []; const map = new Map(); for (const info of record) { const [action, id, nickname] = info.split(' '); if (action === 'Leave') { answer.push([id, '님이 나갔습니다.']); continue; } if (action === 'Enter') { answer.push([id, '님이 들어왔습니다.']); } map.set(id, nickname); } return answer.map((el) => map.get(el[0]) + el[1]); }
Solution 2.
function solution(record) { /* Obj Ver. */ const answer = []; const obj = {}; for (const info of record) { const [action, id, nickname] = info.split(' '); if (action === 'Leave') { answer.push([id, '님이 나갔습니다.']); continue; } if (action === 'Enter') { answer.push([id, '님이 들어왔습니다.']); } obj[id] = nickname; } return answer.map((el) => obj[el[0]] + el[1]); }
Solution 3.
function solution(record) { const users = {}; const info = []; const actObj = { Enter: '님이 들어왔습니다.', Leave: '님이 나갔습니다.', }; for (const rec of record) { const [act, id, nick] = rec.split(' '); if (nick) users[id] = nick; if (act !== 'Change') info.push([act, id]); } return info.map(([act, id]) => `${users[id]}${actObj[act]}`); }
함께 보기
Map - JavaScript | MDN
The Map object holds key-value pairs and remembers the original insertion order of the keys. Any value (both objects and primitive values) may be used as either a key or a value.
developer.mozilla.org
'👩💻 Programming > Coding Test 문제 풀이' 카테고리의 다른 글
[Programmers] level 1: 없는 숫자 더하기 by JavaScript (0) | 2022.07.01 |
---|---|
[Programmers] level 1: 로또의 최고 순위와 최저 순위 by JavaScript (0) | 2022.07.01 |
[Programmers] level 1: 다트게임 by JavaScript (0) | 2022.06.30 |
[Programmers] level 1: 비밀지도 by JavaScript (0) | 2022.06.30 |
[Programmers] level 1: 신규 아이디 추천 by JavaScript (0) | 2022.06.29 |
댓글