본문 바로가기

Algorithm/Implementation

(C++) - 백준(BOJ) 2028번 : 자기복제수

반응형

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

 

2028번: 자기복제수

어떤 자연수 N을 제곱했을 때, 그 제곱수의 맨 뒷자리에 원래의 수 N이 다시 나타나면, 우리는 그 수 N을 자기복제수라고 한다. 예를 들면, 5의 제곱은 52는 25이고 25의 맨 뒷자리에 원래의 수 5가

www.acmicpc.net

단순 구현문제였습니다.

 

풀이방법

 1. 입력받은 수와 제곱수를 문자열로 바꿉니다.

 

 2. 제곱수 문자열에서 입력받은 수의 문자열을 찾습니다. find함수를 통해 찾은 인덱스를 확인해서 마지막에 입력받은 수 문자열이 나온다면 YES, 아니라면 NO를 출력합니다.

 *find함수는 인자에 해당하는 값을 찾지 못했다면 string::npos를 반환합니다.

 

Code

#include <bits/stdc++.h>
using namespace std;
int main(){
    int t;
    cin >> t;
    while(t--){
        int n;
        cin >> n;
        string stringN = to_string(n);
        string stringSquare = to_string(n*n);
        if(stringSquare.find(stringN) == stringSquare.size() - stringN.size()) cout << "YES\n";
        else cout << "NO\n";
    }
}