GW LABS

[Backjoon] 소수&팰린드롬 본문

Algorithm & DataStructure

[Backjoon] 소수&팰린드롬

GeonWoo Kim 2021. 1. 12. 09:47

C++로 문제푸는 연습을 다시하면서 복습을 할만한 문제였다. 소수 판별의 경우 에라토스테네스의 채를 사용할 수도 있지만 판별하려는 숫자의 제곱근만큼만 탐색하면서 소수를 찾아도 충분히 풀 수 있는 문제였다. 팰린드롬 판별의 경우에는 문자열로 변환하여 손쉽게 판별할 수 있었다. 아래는 풀이이다.

 

#include <iostream>
#include <math.h>
#include <string>

using namespace std;

bool isPrime(const int& number) {
    if (number == 1) {
        return false;
    }

    if (number == 2) {
        return true;
    }

    bool answer = true;
    int limit = static_cast<int>(sqrt(number));
    for (int idx = 2; idx <= limit; idx++) {
        if (number % idx == 0) {
            answer = false;
            break;
        }
    }

    return answer;
}

bool isPalindrome(const int& number) {
    int targetNumber = number;
    string target = to_string(targetNumber);
    
    int length = target.length();
    int halfLength = length / 2;

    bool answer = true;
    for (int idx = 0; idx < halfLength; idx++) {
        if (target[idx] != target[length - idx - 1]) {
            answer = false;
            break;
        }
    }

    return answer;
}

int main() {

    int number;
    cin >> number;

    while (true) {
        if (isPrime(number) && isPalindrome(number)) {
            break;
        }
        number++;
    }

    cout << number << endl;

    return 0;
}

'Algorithm &amp; DataStructure' 카테고리의 다른 글

[Backjoon] 숫자놀이  (0) 2022.02.08
[Backjoon] 촌수계산  (0) 2021.02.28
[Backjoon] 트럭 주차  (0) 2021.01.02
[Backjoon] 회전하는 큐  (0) 2020.12.18
[Backjoon] 통나무 건너뛰기  (0) 2020.12.13
Comments