못풀었음
Union - Find 알고리즘 + 해쉬맵 사용
크루스칼 알고리즘에 사용됨
int root[MAX_SIZE]; for (int i = 0; i < MAX_SIZE; i++) parent[i] = i; /* find(x): 재귀 이용 */ int find(int x) { // 루트 노드는 부모 노드 번호로 자기 자신을 가진다. if (root[x] == x) { return x; } else { // 각 노드의 부모 노드를 찾아 올라간다. return find(root[x]); } } /* union(x, y) */ void union(int x, int y){ // 각 원소가 속한 트리의 루트 노드를 찾는다. x = find(x); y = find(y); root[y] = x; }
const solution = (k, roomNumbers) => { const used = new Map(); const answer = roomNumbers.map((number) => findRoom(number, used)); for(let x of used){ //console.log(x); } return answer }; function findRoom(room, used) { // 방이 비어있는경우 if (used.get(room) == undefined) { used.set(room, room + 1); return room; } let next = findRoom(used.get(room), used); used.set(room, next + 1); return next; }