알고리즘/프로그래머스

[프로그래머스] 호텔 방 배정 JavaScript (Lv.4)

lheunoia 2023. 2. 22. 17:17

 

 

 

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이번 문제는 효율성이 중요한 문제였습니다.

 

 

 

 

 

 

📝 문제 풀이

1. 고객이 원하는 방 번호가 담긴  room_number 배열을 순회

2. 현재 방 번호를 assignedRoom 변수에 저장

❌ 현재 방 번호를 배정할 수 없는 경우

     3. assignedRoom이 map에 존재하지 않을 때까지 다음 방 번호를 assignedRoom 변수에 저장

     4. assignedRoom이 map에 존재하지 않으면 임시 배열에 존재하는 모든 키 값을 assignedRoom + 1로 수정

     5. map에 배정된 방 번호: 배정된 방 번호 + 1 추가

⭕️ 현재 방 번호를 배정할 수 있는 경우

     3. assignedRoom이 map에 존재하지 않으면 임시 배열에 존재하는 모든 키 값을 assignedRoom + 1로 수정

     4. map에 배정된 방 번호: 배정된 방 번호 + 1 추가

 

 

 

 

 

👩🏻‍💻 JavaScript 코드

function solution(k, room_number) {
    var answer = [];
    const map = new Map();
    
    room_number.map((room) => {
        let assignedRoom = room;
        const tempArr = [];
        
        while (map.has(assignedRoom)) {
            const nextRoom = map.get(assignedRoom);
            tempArr.push(assignedRoom);
            assignedRoom = nextRoom;
        }
        
        tempArr.map((key) => map.set(key, assignedRoom + 1));
        map.set(assignedRoom, assignedRoom + 1);
        
        answer.push(assignedRoom);
    });
    
    return answer;
}

 

프로그래머스 - 결과 화면

 

 

 

 

 

반응형