CodingTest/Java

BOJ_3182 : ν•œλ™μ΄λŠ” 곡뢀가 ν•˜κΈ° μ‹«μ–΄!

Soom_1n 2022. 11. 22. 19:40

πŸ‘‰ 문제링크

 

3182번: ν•œλ™μ΄λŠ” 곡뢀가 ν•˜κΈ° μ‹«μ–΄!

H-ALGO νšŒμ›μΈ ν•œλ™μ΄λŠ” κ³΅λΆ€ν•˜λŠ”κ²ƒμ„ μ’‹μ•„ν•˜μ§€ μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ μ•½μ‚­λΉ λ₯΄κ²Œλ„ ν•œλ™μ΄λŠ” 곡뢀도 ν•˜μ§€ μ•ŠμœΌλ©΄μ„œ μ–΄λ €μš΄ μ‹œν—˜μ„ ν†΅κ³Όν•˜κ³  μ‹Άμ–΄ν•œλ‹€. 그러던 와쀑 μ–΄λŠ λ‚ , ν•œλ™μ΄μ˜ 동기가 ν•œλ™μ΄μ—

www.acmicpc.net



πŸ”Έ 문제 뢄석 πŸ”Έ

  • nκ³Ό n개의 숫자λ₯Ό μž…λ ₯λ°›λŠ”λ‹€.
    • μˆ«μžλŠ” λ‹€μŒ 숫자의 인덱슀 번호λ₯Ό 가리킨닀.
  • λͺ‡ 번째 숫자 μΈλ±μŠ€μ—μ„œ μ‹œμž‘ν•΄μ•Ό κ°€μž₯ λ§Žμ€ 숫자λ₯Ό κ±ΈμΉ˜λŠ”μ§€ 좜λ ₯ν•œλ‹€.

πŸ”Έ μ½”λ“œ πŸ”Έ

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = sc.nextInt();

        int max = -1, answer = -1;
        for (int i = 0; i < n; i++) {
            boolean[] visit = new boolean[n];
            int idx = i;
            int count = 0;
            while (!visit[idx]) {
                count++;
                visit[idx] = true;
                idx = arr[idx]-1;
            }
            if (count > max) {
                max = count;
                answer = i+1;
            }
        }
        System.out.println(answer);
    }
}

πŸ”Έ μ½”λ“œ 해석 πŸ”Έ

  • 숫자 λ°°μ—΄μ˜ 각 μΈλ±μŠ€μ—μ„œ λͺ¨λ‘ μ‹€ν–‰ν•΄μ„œ λͺ‡ 개의 숫자λ₯Ό κ±Έμ³κ°€λŠ”μ§€ μΉ΄μš΄νŠΈν•œλ‹€.
    • 카운트 횟수의 μ΅œλŒ€κ°’μΌλ•Œμ˜ μ‹œμž‘ 인덱슀λ₯Ό 좜λ ₯ν•œλ‹€.

πŸ”Έ end πŸ”Έ

  • μ΅œλŒ€κ°’μ„ μ°Ύμ•„μ•Ό ν•΄μ„œ 브루트포슀 μ•Œκ³ λ¦¬μ¦˜μ„ μ§κ°ν–ˆλ‹€.

728x90