알고리즘 공부/파이썬(Python)

백준 2153번 소수 단어 파이썬

마달랭 2024. 7. 18. 00:44
반응형

리뷰

딕셔너리와 에라토스테네스의 체로 풀이하였다.

 

문제 풀이

  1. a~Z범위의 알파벳을 키로 갖고 각 순서를 value로 갖는 딕셔너리를 초기화 해준다.
  2. 문자열을 입력 받고 각 문자를 딕셔너리와 비교하여 value의 합을 구한다.
  3. 점수가 나올 수 있는 최대값 보다 크게 배열을 1로 초기화 하고 소수의 경우 0으로 최신화 해준다.
  4. 배열의 점수 인덱스가 1이라면 소수 0이라면 소수가 아님을 출력해 준다.

 

참고 사항

없음

 

 

정답 코드

dic = {}
point = 1
for i in range(97, 123):
    dic[chr(i)] = point
    point += 1
for i in range(65, 91):
    dic[chr(i)] = point
    point += 1
s = input()
prime = 0
for char in s:
    prime += dic[char]
dp = [1] * 1111
for i in range(2, int(1111 ** (1/2))):
    if dp[i]:
        for j in range(i * i, 1111, i):
            dp[j] = 0
print("It is a prime word." if dp[prime] else "It is not a prime word.")

 

 

728x90
반응형