[프로그래머스] 혼자 놀기의 달인 / JavaScript / Level 2

KimYoungWoong·2022년 11월 24일
1

Programmers

목록 보기
31/60
post-thumbnail

🚩문제 주소


📄풀이


구현

카드 배열을 반복합니다.

현재 카드 배열의 인덱스가

  • 0이 아니라면 현재 인덱스에 있는 카드 번호를 따로 저장해두고 0으로 바꿉니다. 그리고 현재 인덱스를 따로 저장해둔 번호를 -1한 수로 바꾸고 카운트를 증가시킵니다.
  • 0이라면 카운트를 정답배열에 넣어주고 반복을 종료합니다.

정답배열을 filter와 sort를 이용해 0을 제거해주고 숫자가 큰 순서로 정렬해줍니다.

정답배열의 길이가 1보다 크다면 정렬된 배열 0번과 1번을 곱한 뒤 반환하고, 아니라면 0을 반환합니다.



👨‍💻코드


const solution = (cards) => {
  const answer = [];
  cards.forEach((v, i) => {
    let idx = i;
    let count = 0;
    while (true) {
      if (cards[idx]) {
        const temp = cards[idx];
        cards[idx] = 0;
        idx = temp - 1;
        count++;
      } else {
        answer.push(count);
        break;
      }
    }
  });
  const sortAnswer = answer.filter((v) => v != 0).sort((a, b) => b - a);

  return sortAnswer.length > 1 ? sortAnswer[0] * sortAnswer[1] : 0;
};

profile
블로그 이전했습니다!! https://highero.tistory.com

0개의 댓글