
내가 생각했을때 문제에서 원하는부분
입력의 첫 줄에는 테스트 케이스의 개수 T (1 ≤ T ≤ 20)가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있으며,
자연수 N (1 ≤ N ≤ 1000)이 주어진다.
각 테스트 케이스에 대해,
주어진 자연수가 자기복제수이면 YES를 아니면 NO를 출력한다.
내가 이 문제를 보고 생각해본 부분
자기복제수를 확인하기 위해서 재귀함수를 사용해서 구현했다.
T만큼 반복하며,
각 테스트 케이스에서 자연수 N을 입력받고,
isSelfReplicating 메서드를 호출하여 자기복제수 여부를 확인한다.
결과에 따라 "YES" 또는 "NO"를 출력한다.
isSelfReplicating(int N) 메서드는 N의 제곱을 계산하고,
그 제곱수의 마지막 부분이 N과 일치하는지를 검사한다.
일치하면 true를 반환하고,
그렇지 않으면 false를 반환한다.
어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다.
코드로 구현
package baekjoon.baekjoon_23;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// 백준 2028번 문제
public class Main806 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int T = Integer.parseInt(br.readLine());
for(int i = 0; i < T; i++) {
int N = Integer.parseInt(br.readLine());
if(isSelfReplicating(N)) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
br.close();
}
public static boolean isSelfReplicating(int N) {
int square = N * N; // N의 제곱 계산
String squareStr = String.valueOf(square); // 제곱수를 문자열로 변환
String NStr = String.valueOf(N); // N을 문자열로 변환
// 제곱수의 마지막 자리가 N과 일치하는지 확인
return squareStr.endsWith(NStr);
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.