본문 바로가기

PS

[BOJ] 2153번 소수 단어 문제

1D1P Day76 BOJ 2153번 소수 단어 문제 - 2021.01.19 - 2153.py

 

출처 : (BOJ_2153번_소수 단어)[https://www.acmicpc.net/problem/2153]

  • 1도 소수라는 조건을 기억하자.
  • 미리 소수 배열을 만든다.
  • 각 알파벳은 ord를 이용해서 정수로 변환하자.

 

에라토스테네스의 체를 이용하는 게 더 효율적이겠지만, 그냥 2000개의 배열을 각각 소수 검사했다.

 

나타날 수 있는 소수의 최대값이 52 * 20 정도이기 때문에 2000 정도면 충분할 것이다.

 

 

# 1D1P Day76 BOJ 2153번 소수 단어 문제 - 2021.01.19

word = input()

primes = [1] * 2000
primes[0] = 0
primes[1] = 1

for i in range(4, 2000):
    for j in range(2, int(i ** 0.5) + 1):
        if not (i % j):
            primes[i] = 0
            break

result = 0
for i in range(len(word)):
    if 'a' <= word[i] <= 'z':
        result += ord(word[i]) - ord('a') + 1
    else:
        result += ord(word[i]) - ord('A') + 27

if primes[result]:
    print("It is a prime word.")
else:
    print("It is not a prime word.")

'PS' 카테고리의 다른 글

[BOJ] 15664번 N과 M (10) 문제  (0) 2021.03.03
[BOJ] 15665번 N과 M (11) 문제  (0) 2021.03.03
BOJ - 2133번 타일 채우기  (0) 2020.09.08
BOJ - 1699번 제곱수의 합  (0) 2020.09.08
BOJ - 1463번 1로 만들기  (0) 2020.09.03