알고리즘
백준 알고리즘 2331 구현
창따오
2023. 12. 2. 00:30
728x90
문제출처 : https://www.acmicpc.net/problem/2331

소스코드
package baekjoon;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
public class Baek2331 {
static int a, p;
static int answer =0;
static List<Integer> numList = new ArrayList<>();
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
a = Integer.parseInt(st.nextToken());
p = Integer.parseInt(st.nextToken());
numList.add(a);
calcNext(a,p);
System.out.println(answer);
}
static void calcNext(int prev, int p) {
while (true) {
int sum = 0;
while (prev != 0) {
int eachNum = prev%10;
sum += (int) Math.pow(eachNum, p);
prev/=10;
}
if (numList.contains(sum)) {
answer= numList.indexOf(sum);
break;
} else {
numList.add(sum);
prev = sum;
}
}
}
}
느낀점 : 문제를 풀다가 58부터 반복된다고 적혀있어서 indexOf를 사용하게 되면 5가 나온다고 생각을 하고 hashMap을 이용해서 풀고 있었다. 하지만 37부터 반복된다는 것을 알았고, indexOf 메소드를 이용하여 비교적 쉽게 풀 수 있었다. 문제를 좀 더 꼼꼼하게 볼 필요성을 느꼈다.