Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

csct3434

[level 2] 혼자 놀기의 달인 - 131130 본문

프로그래머스

[level 2] 혼자 놀기의 달인 - 131130

csct3434 2024. 3. 4. 22:37

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

import java.util.Comparator;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.stream.Collectors;

class Solution {

    public int solution(int[] cards) {
        List<HashSet<Integer>> groups = new LinkedList<>();
        boolean[] selected = new boolean[cards.length + 1];

        for (int card : cards) {
            HashSet<Integer> group = new HashSet<>();

            while (!selected[card]) {
                selected[card] = true;
                group.add(card);
                card = cards[card - 1];
            }

            groups.add(group);
        }

        List<Integer> groupSizes = groups.stream()
            .map(HashSet::size)
            .sorted(Comparator.reverseOrder())
            .collect(Collectors.toList());

        return groupSizes.size() == 1 ? 0 : groupSizes.get(0) * groupSizes.get(1);
    }
}