2153번: 소수 단어백준/문제2024. 2. 15. 14:03
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2153
언어 : Kotlin
문제 설명 :
소수란 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.를 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
UFRN | It is a prime word. |
contest | It is not a prime word. |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.math.sqrt
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
var sum = 0
readLine().forEach {
if (it in 'a' .. 'z') sum += it.code - 96
if (it in 'A' .. 'Z') sum += it.code - 38
}
bw.write(if (isPrime(sum)) "It is a prime word." else "It is not a prime word.")
bw.flush()
bw.close()
}
fun isPrime(n: Int): Boolean {
if (n < 1) return false
if (n == 1) return true
return (2 .. sqrt(n.toDouble()).toInt()).none { n % it == 0 }
}
'백준 > 문제' 카테고리의 다른 글
2999번: 비밀 이메일 (0) | 2024.02.16 |
---|---|
27889번: 특별한 학교 이름 (0) | 2024.02.16 |
3029번: 경고 (0) | 2024.02.14 |
3028번: 창영마을 (0) | 2024.02.14 |
5555번: 반지 (1) | 2024.02.13 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!