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

입력값이 어떤 자리의 수인지를 확인하고 그 값을 나눠 제곱하기 전의 수와 비교하여 YES or NO를 출력해 주면 되는 간단한 문제이다.
하지만 내가 고민한 것은 if을 사용하여 입력받은 값이 10의 자리인지 100의 자리인지를 확인하는 방법 말고 뭔가 알 수 있는 방법이 있다면 훨씬 간단하게 코드를 짤 수 있을 거 같은데 그 방법이 도저히 생각이 나지 않았다.
그래서 뭐랄까 코드가 굉장히 더럽다(?)랄까.. 무튼 별로 마음에는 들지 않는 코드가 된거 같다.
◎알고리즘 [풀이과정]
입력받은 값이 10의 자리인지 100의 자리인지 1000의 자리인지를 확인한후 각 자리에 맞는 수를 제곱한 수와 나눠 나머지가 제곱하기 전의 숫자와 일치하는지 비교하면 된다.
여기서 1000이 들어왔을때 는 예외처리를 하여 해결한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
Scanner sc = new Scanner(System.in);
int num = Integer.parseInt(bf.readLine());
for(int i =0;i<num;i++) {
int number = Integer.parseInt(bf.readLine());
if(number<10) {
if(number*number%10==number) {
System.out.println("YES");
}
else System.out.println("NO");
}
else if(number<100) {
if(number*number%100==number) {
System.out.println("YES");
}
else System.out.println("NO");
}
else if(number<1000) {
if(number*number%1000==number) {
System.out.println("YES");
}
else System.out.println("NO");
}
else if(number == 1000) {
System.out.println("NO");
}
}
}
}'알고리즘 > 랜덤 마라톤' 카테고리의 다른 글
| [백준] 14593번: 2017 아주대학교 프로그래밍 경시대회 (Large) - JAVA[랜덤 마라톤] (0) | 2024.09.02 |
|---|---|
| [백준] 11466번: Alex Origami Squares - JAVA[랜덤 마라톤] (0) | 2024.08.30 |
| [백준] 15751번: Teleportation - JAVA[랜덤 마라톤] (0) | 2024.08.29 |
| [백준] 22938번: 백발백준하는 명사수 - JAVA[랜덤 마라톤] (2) | 2024.08.28 |
| [백준] 23253번: 자료구조는 정말 최고야 - JAVA[랜덤 마라톤] (1) | 2024.08.27 |