문제 : boj2028
항상 n^2의 자리수는 n보다 크거나 같다. 따라서 n^2과 n에 대해 둘 다 낮은 자리수부터 한 자리씩 빼내고(n%10), 둘을 비교한 후 둘 다 낮은 자리수를 없앤다(n/10). 이걸 n이 0이 될 때 까지 반복하면 n에 해당하는 자리수만큼 비교할 수 있다.
예를들어 n이 11일 경우, n^2을 nPow라 하면 nPow=121이다. 처음에 n%10과 nPow%10을 비교하고 동일하므로 n/=10, nPow/=10을 해주면 1과 12가 된다. 마찬가지로 다시 n%10과 nPow%10을 비교하고 이번엔 다르므로 NO를 출력해주면 된다.
코드 : github
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main {
private void solution() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int t = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
while (t-->0) {
int n = Integer.parseInt(br.readLine());
int nPow = n*n;
boolean isNo = false;
while(n!=0) {
int a = n%10;
int b = nPow%10;
if (a!=b) {
sb.append("NO\n");
isNo = true;
break;
}
n/=10;
nPow/=10;
}
if (!isNo) sb.append("YES\n");
}
System.out.print(sb);
}
public static void main(String[] args) throws Exception {
new Main().solution();
}
}
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 21756 - 지우개 (boj java) (0) | 2022.06.16 |
---|---|
[자바] 백준 14656 - 조교는 새디스트야!! (boj java) (0) | 2022.06.15 |
[자바] 백준 23825 - SASA 모형을 만들어보자 (boj java) (0) | 2022.06.13 |
[자바] 백준 5789 - 한다 안한다 (boj java) (0) | 2022.06.12 |
[자바] 백준 2154 - 수 이어 쓰기 3 (boj java) (0) | 2022.06.11 |
댓글