2019 카카오 개발자 겨울 인턴십
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/64063
C++ 풀이
#include <string>
#include <vector>
#include <map>
using namespace std;
map<long, long> room_map; //배정된 방들의 맵 <배정된 방 번호, 또 다른 고객이 원할 경우 배정될 다음 방 번호>
long long findAvailableRoomN(long long num) { //배정 가능한 방 중 가장 번호가 작은 방 찾기
if (room_map[num] == 0) {
return num;
}
else {
room_map[num] = findAvailableRoomN(room_map[num]);
return room_map[num];
}
}
vector<long long> solution(long long k, vector<long long> room_number) {
vector<long long> answer;
long long roomN;
long long otherRoomN;
for(int i = 0; i < room_number.size(); i++){
roomN = room_number[i];
if(room_map[roomN] == 0){ //아직 배정되지 않은 방인 경우
answer.push_back(roomN);
room_map[roomN] = findAvailableRoomN(roomN + 1);
}
else{ //이미 배정된 방인 경우
otherRoomN = findAvailableRoomN(roomN);
answer.push_back(otherRoomN);
room_map[otherRoomN] = findAvailableRoomN(otherRoomN + 1);
}
}
return answer;
}
map을 사용하여 풀었다.
배정된 방의 경우 key값을 방 번호, value값을 또 다른 고객이 방을 원할 시 부여해줄 다음 방 번호로 저장하였다.
반응형
'알고리즘 · 코딩' 카테고리의 다른 글
[프로그래머스] 정수 제곱근 판별 (0) | 2020.04.21 |
---|---|
[프로그래머스] 이상한 문자 만들기 (0) | 2020.04.21 |
[프로그래머스] 주식가격 (0) | 2020.04.17 |
[프로그래머스] 쇠막대기 (0) | 2020.04.14 |
[프로그래머스] 디스크 컨트롤러 (0) | 2020.04.07 |