문제 풀이/백준

[백준] 2331번. 반복수열 (JAVA)

27200 2024. 2. 11. 18:57

https://www.acmicpc.net/problem/2331


문제


풀이

import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        ArrayList<Integer> arr = new ArrayList<>();
        arr.add(n);

        while(true){
            int number = 0;
            int temp = arr.get(arr.size() - 1);
            while(temp != 0){
                number += (int)Math.pow(temp  % 10,(double) m);
                temp /= 10;
            }
            if(arr.contains(number)){
                int cnt = arr.indexOf(number);
                System.out.println(cnt);
                break;
            }

            arr.add(number);
        }

    }

}

 

숫자를 받으면 이를 어레이리스트에 넣어두고 문제에서 제시된 조건만큼 각 자릿수 제곱을 하여 리스트에 넣는다. 이때 이미 리스트에 있다면 그 인덱스를 출력하면 되고 아니라면 리스트에 넣어주면 된다.