[프로그래머스] 혼자 놀기의 달인 (JS)

hhkim·2023년 12월 14일
0

Algorithm - JavaScript

목록 보기
187/188
post-thumbnail

풀이 과정

  1. 전체 상자에 대해 반복
  2. 아직 열리지 않았으면 해당 상자의 카드 번호를 그룹에 추가하고 열림 표시
  3. 2번 카드의 번호를 가진 상자 열기
  4. 더이상 열 수 없으면 다음 상자에 대해 반복
  5. 더이상 만들 수 있는 그룹이 없으면 그룹 배열 길이의 최댓값 구해서 갱신

코드

function solution(cards) {
  let result = 0;
  for (let i = 0; i < cards.length; ++i) {
    const groups = [[]];
    const visited = Array(cards.length).fill(false);
    let curr = cards[i] - 1;

    while (curr >= 0) {
      visited[curr] = true;
      groups.at(-1).push(cards[curr]);
      curr = cards[curr] - 1;
      if (visited[curr]) {
        groups.push([]);
        curr = visited.findIndex((v) => v === false);
      }
    }

    groups.sort((a, b) => b.length - a.length);
    result = Math.max(result, groups[0].length * groups[1].length);
  }
  return result;
}

🦾

슬럼프가 와서 거의 3주를 쉬었는데 다행히 30분도 걸리지 않아서 풀 수 있는 문제였다.
오랜만에 보니까 문제부터 잘 읽히지 않아서 역시 공부는 꾸준히 해야 하는구나 싶었다.

0개의 댓글