알고리즘/BOJ

백준 2153번 소수 단어

꾸준함. 2018. 11. 27. 02:51

문제 링크입니다: https://www.acmicpc.net/problem/2153


문제를 잘 읽어야하는 문제였습니다.

해당 문제에서는 1도 소수로 간주하기 때문에 에라토스테네스의 체 함수를 진행할 때 minFactor[0]만 -1로 초기화해줘야합니다.

단순 에라토스테네스의 체 구현 문제였기 때문에 쉽게 풀 수 있는 문제였습니다.


#include <iostream>

#include <vector>

#include <algorithm>

#include <string>

using namespace std;

 

const int MAX = 52 * 20 + 10;

 

int minFactor[MAX];

 

void eratosthenes(void)

{

        //이 문제에서는 1도 소수;;

        minFactor[0] = -1;

 

        for (int i = 1; i < MAX; i++)

                 minFactor[i] = i;

 

        for (int i = 2; i < MAX; i++)

                 if (minFactor[i] == i)

                         for (int j = i * i; j < MAX; j += i)

                                 if (minFactor[j] == j)

                                          minFactor[j] = i;

}

 

int main(void)

{

        ios_base::sync_with_stdio(0);

        cin.tie(0);

        string s;

        cin >> s;

 

        eratosthenes();

        int result = 0;

        for (int i = 0; i < s.length(); i++)

                 if (s[i] >= 'a')

                         result += (s[i] - 'a' + 1);

                 else

                         result += (s[i] - 'A' + 27);

 

        if (minFactor[result] == result)

                 cout << "It is a prime word.\n";

        else

                 cout << "It is not a prime word.\n";

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

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

백준 1550번 16진수  (0) 2018.12.01
백준 1212번 8진수 2진수  (0) 2018.12.01
백준 11286번 절댓값 힙  (0) 2018.11.24
백준 11279번 최대 힙  (0) 2018.11.24
백준 1927번 최소 힙  (0) 2018.11.24