πŸ“¦ Chango/🏫 First Solve at School

[BOJ B2][C++] λ°±μ€€ 2153번: μ†Œμˆ˜ 단어

선달 2022. 12. 13. 01:37
λ°˜μ‘ν˜•

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

 

2153번: μ†Œμˆ˜ 단어

μ†Œμˆ˜λž€ 1κ³Ό 자기 μžμ‹ μœΌλ‘œλ§Œ λ‚˜λˆ„μ–΄λ–¨μ–΄μ§€λŠ” 수λ₯Ό λ§ν•œλ‹€. 예λ₯Ό λ“€λ©΄ 1, 2, 3, 5, 17, 101, 10007 등이 μ†Œμˆ˜μ΄λ‹€. 이 λ¬Έμ œμ—μ„œλŠ” νŽΈμ˜μƒ 1도 μ†Œμˆ˜λ‘œ ν•˜μž. μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 이루어진 μ˜μ–΄ 단어가 ν•˜λ‚˜

www.acmicpc.net

 

문제

μ†Œμˆ˜λž€ 1κ³Ό 자기 μžμ‹ μœΌλ‘œλ§Œ λ‚˜λˆ„μ–΄λ–¨μ–΄μ§€λŠ” 수λ₯Ό λ§ν•œλ‹€. 예λ₯Ό λ“€λ©΄ 1, 2, 3, 5, 17, 101, 10007 등이 μ†Œμˆ˜μ΄λ‹€. 이 λ¬Έμ œμ—μ„œλŠ” νŽΈμ˜μƒ 1도 μ†Œμˆ˜λ‘œ ν•˜μž.

μ•ŒνŒŒλ²³ λŒ€μ†Œλ¬Έμžλ‘œ 이루어진 μ˜μ–΄ 단어가 ν•˜λ‚˜ μžˆμ„ λ•Œ, aλ₯Ό 1둜, bλ₯Ό 2둜, …, zλ₯Ό 26으둜, Aλ₯Ό 27둜, …, Zλ₯Ό 52둜 ν•˜μ—¬ κ·Έ 합을 κ΅¬ν•œλ‹€. 예λ₯Ό λ“€μ–΄ cyworldλŠ” 합을 κ΅¬ν•˜λ©΄ 100이 되고, abcdλŠ” 10이 λœλ‹€.

이와 같이 κ΅¬ν•œ μˆ˜κ°€ μ†Œμˆ˜μΈ 경우, κ·Έ 단어λ₯Ό μ†Œμˆ˜ 단어라고 ν•œλ‹€. 단어가 μ£Όμ–΄μ‘Œμ„ λ•Œ, κ·Έ 단어가 μ†Œμˆ˜ 단어인지 νŒλ³„ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.

μž…λ ₯

첫째 쀄에 단어가 주어진닀. λ‹¨μ–΄μ˜ κΈΈμ΄λŠ” 20자 μ΄ν•˜μ΄λ‹€. μ£Όμ–΄μ§€λŠ” λ‹¨μ–΄λŠ” μ•ŒνŒŒλ²³ μ†Œλ¬Έμžμ™€ λŒ€λ¬Έμžλ§ŒμœΌλ‘œ 이루어져 μžˆλ‹€.

좜λ ₯

μ•„λž˜μ˜ μ˜ˆμ œμ™€ 같은 ν˜•μ‹μœΌλ‘œ 좜λ ₯을 ν•œλ‹€. μ†Œμˆ˜ 단어인 κ²½μš°μ—λŠ” It is a prime word.λ₯Ό, μ•„λ‹Œ κ²½μš°μ—λŠ” It is not a prime word.λ₯Ό 좜λ ₯ν•œλ‹€.

 

풀이

μ—λΌν† μŠ€ν…Œλ„€μŠ€μ˜ 체λ₯Ό κ΅¬ν˜„ν•œλ‹€λ©΄ μ†Œμˆ˜λŠ” μ‰½κ²Œ νŒλ³„ κ°€λŠ₯ν•˜λ‹€

ν•˜μ§€λ§Œ!

λ©”λͺ¨λ¦¬ 초과 κ°€ λœ¬λ‹€λ©΄..

ν•¨μˆ˜λ₯Ό λ”°λ‘œ λ§Œλ“€μ§€ 말고 λ©”μΈν•¨μˆ˜μ—μ„œ ν•΄κ²°ν•˜μž....

μ΄κ±°λ•Œλ¬Έμ— μ˜€λž˜κ±Έλ Έλ‹€ γ… γ… 

 

// Authored by : seondal
// Co-authored by : -

// #include <bits/stdc++.h>
#include <iostream>
#include <vector>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
    
    // v[i] : 숫자 iκ°€ μ†Œμˆ˜μΈκ°€?
    vector<bool> isPrime(1040, true);
    for(int i=2; i<=1040; i++) {
        if(!isPrime[i])
            continue;
        for(int j=i*i; j<=1040; j+=i) {
            if(!isPrime[j])
                continue;
            isPrime[j] = false;
        }
    }
    
    // μž…λ ₯
    string word;
    cin >> word;

    // λ‹¨μ–΄μ˜ ν•© κ΅¬ν•˜κΈ°
    int cnt = 0;
    for(int i=0; i<word.size(); i++){
        if(word[i] < 90)  // λŒ€λ¬Έμž
            cnt += word[i]-'A'+27;
        else  // μ†Œλ¬Έμž
            cnt += word[i]-'a'+1;
    }
    
    // 좜λ ₯
    if(isPrime[cnt])
        cout << "It is a prime word.";
    else
        cout << "It is not a prime word.";
    
    return 0;
}

/*
 */
λ°˜μ‘ν˜•