Skip to content

Commit

Permalink
#13 24.01.18 > 혼자 놀기의 달인 다시풀기
Browse files Browse the repository at this point in the history
  • Loading branch information
beurmuz committed Jan 18, 2024
1 parent 2e4299f commit 623cfa1
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/programmers/Lv_2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@
| 75 | [무인도 여행](./island.js) | 23.04.29 | O | [23.12.05](./replay/island.js) |
| 76 | [마법의 엘리베이터](./elevator.js) | 23.04.30 || [23.12.06](./replay/elevator.js) |
| 77 | [호텔 대실](./hotel.js) | 23.05.01 | X | [23.12.13](./replay/hotel.js) |
| 78 | [혼자 놀기의 달인](./alonePlay.js) | 23.05.17 | X |
| 78 | [혼자 놀기의 달인](./alonePlay.js) | 23.05.17 | X | [24.01.18](./replay/alonePlay.js) |
| 79 | [전화번호 목록](./telList.js) | 23.10.27 | X |
| 80 | [주식 가격](./stockPrice.js) | 23.10.29 | X |
| 81 | [숫자 카드 나누기](./divideNumCard.js) | 23.11.07 | X |
Expand Down
36 changes: 36 additions & 0 deletions src/programmers/Lv_2/replay/alonePlay.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
* [구현]
* - 문제를 이해 못해서 알고리즘 구현을 못하고 있었다. 누가 문제 풀이 해놓은 것을 보고 이해한 후 푸니 짱 쉬움.. 이게 머야!
* - 어쨌든 굳이 방문 여부를 따로 저장할 배열을 만들지 않고도, 방문한 인덱스에 해당하는 값을 0으로 바꾸어주면 된다.
* => 어차피 숫자는 1이상 100이하의 수가 있기 때문에, 0이 나올 일이 없어 가능한 것이다.
*/

function solution(cards) {
// 상자 당 카드 개수를 저장할 배열
let boxes = [];

// cards를 순회한다.
cards.forEach((v, i) => {
let idx = i;
let count = 0; // 현재 상자에 속한 숫자들의 개수

while (1) {
if (cards[idx]) {
let cardNum = cards[idx]; // 현재 카드 번호
cards[idx] = 0; // 방문했으니 0으로 만든다.
idx = cardNum - 1; // 다음에 방문할 인덱스 카드 번호
count++; // 1개 방문했으니 1증가
} else {
// 이미 방문한 경우
if (count === 0) break;
else {
boxes.push(count);
break;
}
}
}
});

boxes.sort((a, b) => b - a);
return boxes.length > 1 ? boxes[0] * boxes[1] : 0;
}

0 comments on commit 623cfa1

Please sign in to comment.