https://school.programmers.co.kr/learn/courses/30/lessons/64063
이번 문제는 효율성이 중요한 문제였습니다.
📝 문제 풀이
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;
}
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 빛의 경로 사이클 C++ (Lv.2) (0) | 2023.04.04 |
---|---|
[프로그래머스] LV.1 공원 산책 C++ (0) | 2023.03.31 |
[프로그래머스] 입국심사 C++ (Lv.3) (0) | 2022.02.24 |
[프로그래머스] 거리두기 확인하기 (0) | 2022.02.22 |
[프로그래머스] 점프와 순간 이동 (0) | 2022.02.21 |