BOJ 1747 소수&팰린드롬

2020. 9. 21. 00:04·알고리즘/BOJ

www.acmicpc.net/problem/1747

 

1747번: 소수&팰린드롬

어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,

www.acmicpc.net

팰린드롬 수는 어떤 수를 반대로 뒤집고 그 수가 같다면 팰린드롬 수이다.

에라토스테네스의 채를 사용해서 소수를 판단해주고 문자열을 사용해서 뒤집고 체크해주면 되는 쉬운 문제였다.

 

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;

vector<bool> sieve(1100001);

void era(int n) {
	fill(sieve.begin(), sieve.end(), true);
	sieve[0] = sieve[1] = false;
	for (int i = 2; i * i <= 1100000; i++) {
		if (sieve[i]) {
			for (int j = i * 2; j <= 1100000; j += i) sieve[j] = false;
		}
	}
}

bool palindrome(string a) {
	string b(a);
	reverse(b.begin(), b.end());
	if (a == b) return true;
	return false;
}

int main() {
	int n;
	cin >> n;
	era(n);
	for (int i = n; i < 1100001; i++) {
		if (sieve[i] && palindrome(to_string(i))) {
			cout << i << endl; break;
		}
	}
	return 0;
}

주의해야 될 점은 N이 백만까지인데 뒤집은 숫자가 백만보다 클 수 있으므로 여유롭게 110만으로 설정해뒀다.

 

'알고리즘 > BOJ' 카테고리의 다른 글

BOJ 팰린드롬?  (0) 2020.09.22
BOJ 18870 좌표 압축  (0) 2020.09.21
백준 2086 피보나치 수의 합  (0) 2020.09.20
BOJ 11778 피보나치 수와 최대공약수  (0) 2020.09.19
BOJ 11444 피보나치 수 6  (0) 2020.09.18
'알고리즘/BOJ' 카테고리의 다른 글
  • BOJ 팰린드롬?
  • BOJ 18870 좌표 압축
  • 백준 2086 피보나치 수의 합
  • BOJ 11778 피보나치 수와 최대공약수
khyu2
khyu2
  • khyu2
    dev log
    khyu2
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 알고리즘
        • BOJ
        • Programmers
        • Algorithm
        • SWEA
      • 개발
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    dp
    다익스트라
    이분탐색
    BOJ
    유니온 파인드
    시뮬레이션
    구현
    조합
    트리
    행렬 제곱
    코딩테스트 연습
    피사노 주기
    SWEA
    큐
    GREEDY
    소수
    팰린드롬
    완전 탐색
    피보나치 수
    분할 정복
    알고리즘
    냅색
    BFS
    dfs
    MST
    완전탐색
    우선순위 큐
    이분 탐색
    크루스칼
    프로그래머스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
khyu2
BOJ 1747 소수&팰린드롬
상단으로

티스토리툴바