programmers_혼자 놀기의 달인_java

2023. 5. 15. 19:35Algorithm/Programmers

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/131130

 

프로그래머스

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

programmers.co.kr

import java.util.Arrays;

class Solution {
    public int solution(int[] cards) {
        int answer = 0;
        int cardsLenght = cards.length;

        int firstGroup = 0;
        int secondGroup = 0;

        boolean[] visited = new boolean[cardsLenght+1];
        // 완전탐색
        for (int i = 1; i<=cardsLenght; i++){
            Arrays.fill(visited, false);
            firstGroup = cardSearch(cards, i, visited);
            for (int j = 1; j<cardsLenght; j++){
                if (!visited[j]){
                    secondGroup = cardSearch(cards, j, visited);
//                    System.out.println(i + " " + j + " " +firstGroup + " " + secondGroup);
                    answer = Math.max(answer, firstGroup * secondGroup);
                }
            }

        }

        return answer;
    }

    // 카드 더미 탐색
    public int cardSearch(int[] card, int start, boolean[] visited){
        int now = start;
        int cnt = 0;
        while (true){
            cnt++;
            if(card[now-1] == start || visited[now]){ // 선택한 수가 등장 || 이미 열었던 상자
                visited[now] = true;
                return cnt;
            }
            visited[now] = true; // 방문 표시
            now = card[now-1]; // 다음 위치
        }
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

programmers_테이블 해시 함수_java  (0) 2023.05.17
programmers_후보키_java  (0) 2023.05.17
programmers_숫자 카드 나누기_java  (0) 2023.05.15
programmers_하노이의 탑_java  (0) 2023.05.15
programmers_문자열 압축_java  (0) 2023.05.15