
내가 생각했을때 문제에서 원하는부분
첫째 줄에 처음 시작하는 두 자연수 N과 P가 공백을 사이에 두고 주어진다.
첫째 줄에 반복되는 부분에 포함된 서로 다른 수의 개수를 출력한다.
내가 이 문제를 보고 생각해본 부분
주어진 (N)과 (P)를 이용해 새로운 수를 생성하고,
그 수가 언제 반복되는지를 추적하여 반복되는 수의 개수를 계산한다.
HashSet을 사용하여 중복을 자동으로 관리하고,
반복이 발생할 때까지 계속 계산을 수행합니다. 최종적으로 반복되는 수의 개수를 출력한다.
코드로 구현
package baekjoon.baekjoon_24;
import java.io.*;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
// 백준 2526번 문제
public class Main830 {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int P = Integer.parseInt(st.nextToken());
int value = N;
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
while(true) {
value = (value * N) % P;
if(!set1.add(value)) {
if(!set2.add(value)) {
break;
}
}
}
bw.write(set2.size() + "");
bw.flush();
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.