문제


풀이
효성
역시나 시간 초과..
function solution(k, room_number) { let room = Array(k).fill(null); let answer = []; for(let i=0; i<k; i++) { if(!room[room_number[i]]) { room[room_number[i]] = room_number[i]; answer.push(room_number[i]) } else { let uniqNum = getUniqNum(room, room_number[i]); answer.push(uniqNum); room[uniqNum] = uniqNum; } } return answer.filter(room => room); } function getUniqNum(arr, num) { for(let i=num; i<arr.length; i++) { if(!arr[i]) { return i; } } }
참고한 풀이
function getEmptyRoomNum(roomMap, roomNum) { if(!roomMap.has(roomNum) || roomMap.get(roomNum) === roomNum) { return roomNum; } const emptyRoomNum = getEmptyRoomNum(roomMap, roomMap.get(roomNum)); roomMap.set(roomNum, emptyRoomNum); return emptyRoomNum; } function solution(k, room_number) { const roomMap = new Map(); return room_number.map(reqRoomNum => { const emptyRoomNum = getEmptyRoomNum(roomMap, reqRoomNum); const nextEmptyRoomNum = getEmptyRoomNum(roomMap, emptyRoomNum + 1); roomMap.set(emptyRoomNum, nextEmptyRoomNum); return emptyRoomNum; }); }
재영
const findParent = (number, parent) => { if (!parent.has(number)) { parent.set(number, number + 1); return number; } const next = findParent(parent.get(number), parent); parent.set(number, next + 1); return next; }; const solution = (k, room_number) => { const result = []; const parent = new Map(); room_number.forEach((roomNum) => { result.push(findParent(roomNum, parent)); }); return result; };
은찬
const solution = (k, room_number) => { const answer = []; const map = new Map(); const find = (number) => { if(!map.get(number)){ map.set(number, number + 1); return number; } const newNumber = find(map.get(number)); map.set(number, newNumber + 1); return newNumber; } for(let i = 0; i < room_number.length; i++){ const number = find(room_number[i]); answer.push(number); } return answer; }
희진
일단 시간초과!! ㅜㅜ
function solution(k, room_number) { function isInclude(n,arr){ if(arr.includes(n)){ return isInclude(n+1,arr) }else{ return n; } } let answer = [] for(let i=0;i<room_number.length;i++){ answer.push(isInclude(room_number[i],answer)) } return answer; }