[프로그래머스 Level4 호텔방배정] JavaScript

IT공부중·2020년 5월 4일
1

알고리즘

목록 보기
24/49

https://programmers.co.kr/learn/courses/30/lessons/64063

문제 풀이

python으로 할 때는 그냥 dictionary 자료형을 쓰면 시간초과가 뜨지 않았다. 그래서 js로 풀 때도 그냥 Object를 사용하여서 풀었는데 마지막 테스트케이스에서 시간 초과가 났다. object를 사용한 것을 Map 자료형을 써서 푸니깐 마지막 테스트 케이스에서 시간초과가 나지 않았다.

MDN을 보면 다음과 같은 Map과 Object의 차이를 적어놓았는데 아마 마지막 줄의 성능 차이에서 차이가 나지 않았나 싶다. 그리고 그 외에도 이점이 꽤 많은 것 같다.

풀이는 https://velog.io/@ansrjsdn/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-level4-%ED%98%B8%ED%85%94-%EB%B0%A9-%EB%B0%B0%EC%A0%95-Python
적은 것과 같다.

코드

function findRoom(number, rooms) {
    if(!rooms.has(number)) { 
        rooms.set(number, number+1);
        return number
    }
    let p = findRoom(rooms.get(number), rooms);
    rooms.set(number, p + 1);
    return p;
}

function solution(k, room_number) {
    const answer = [];
    const rooms = new Map();
    let empty;
    let length = room_number.length;

    for(let i = 0; i < length; i++) {
        empty = findRoom(room_number[i], rooms);
        answer.push(empty);
    }
    return answer;
}
profile
4년차 프론트엔드 개발자 문건우입니다.

0개의 댓글