2019 카카오 개발자 겨울 인턴십

2024. 3. 7. 17:51개발/코딩테스트

반응형

호텔 방 배정

 

프로그래머스

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

programmers.co.kr

 

function solution(k, room_number) {
    
    var answer = [];
    var room = []
    for (i= 0 ; i< k+1; i++){
        room.push(false)
    }
    
    //요청 중 가장 작은 방 
    let min = k
    
    // 그 이후 사용 가능한방
    let max = 0 
    
    room_number.map(i => {
        if(room[i-1] == false){
            answer.push(i)
            room[i-1] = true
        } else {
            
            let j = i
                  
            if(i > min && i < max){
                j = max 
            }
                
            
   
            while(true){
                if(room[j]){
                    j++
                    
                    if(j >= min && j < max ){
                        j = max 
                        i = min
                    }
                
                    
                } else {
                    
                    answer.push(j+1)
                    room[j] = true
                    
                    min = i
                    max = j
                   
                    break
                    
                    
                }
            }
            
        }
       
        
    })
    
    
    
    
    return answer;
}
function solution(k, room_number) {
    var answer = [];
    let room = {}
    
    for (i=1; i < k + 1 ; i ++){
        room[i] = false
    }
    
    let min = k
    let max = 0 
    
    room_number.forEach(i => {
        
        if(room[i]){
            let j = i
            
            
            
            
            if(j>=min && j<=max ){
                j = max
            }
            
            while(true){
                
                if(room[j]) {
                    j++
                    
                } else {
                    room[j] = true
                    answer.push(j)
                    min = i
                    max = j 
                    break
                }
            
            }
            
            min = Math.min(i,min)
            
            
        } else {
            room[i] = true
            answer.push(i)
        }
        
                
    })
    
    
    return answer;
}
function solution(k, room_number) {
    var answer = [];
    let room = {}
    
    room_number.map(i => {
        if(i in room){
            let next = room[i]
            let temp = [i]
            
            while (true){
                if(!(next in room)){
                    room[next] = next +1
                    answer.push(next)
                    break
                }
                temp.push(next)
                next= room[next]
                
            }
            
            temp.forEach(i => {
                room[i] = next+1
            })
        } else{
            answer.push(i)
            room[i] = i +1
        }
    })

    return answer
    
}
function find(x, rooms) {
    if(!(x in rooms)) {
        rooms[x] = x + 1;
        return x;
    }
    return rooms[x] = find(rooms[x], rooms);
}

function solution(k, room_number) {
    let answer = [];
    let rooms = {};

    room_number.forEach(x => {
        let emptyRoom = find(x, rooms);
        answer.push(emptyRoom);
    });

    return answer;
}
function solution(k, room_number) {
    const answer = [];
    const room = new Map(); // 빠른 검색을 위해 Map 사용

    // 다음 사용 가능한 방을 찾는 함수
    function findNext(roomNumber) {
        // 방이 사용 가능하면 반환
        if (!room.has(roomNumber)) {
            return roomNumber;
        }
        // 재귀적으로 다음 사용 가능한 방 찾기
        return room.set(roomNumber, findNext(room.get(roomNumber))).get(roomNumber);
    }

    room_number.forEach(i => {
        const next = findNext(i); // 다음 사용 가능한 방 찾기
        answer.push(next); // 다음 사용 가능한 방을 답에 추가
        room.set(next, next + 1); // 다음 방을 사용 중으로 표시
    });

    return answer;
}



좋아 발전했어

반응형

'개발 > 코딩테스트' 카테고리의 다른 글

알고리즘  (0) 2023.02.10
알고리즘이란  (0) 2023.02.08
직사각형 꼭지점 3개있을시 나머지 하나 구하기  (0) 2022.04.28