반응형
백준 1747번 문제입니다. (solved.ac) 기준 실버 1 문제입니다.
https://www.acmicpc.net/problem/1747
문제
문제 접근
n을 입력받고 n이상의 수들 중 소수이면서 팰린드롬인 수를 찾아 그 중 가장 작은 수를 출력하면 됩니다.
말 그대로 n이상의 모든 수를 조건에 맞는 수가 나올 때 까지 탐색하면 됩니다.
실버1의 난이도라서 무조건 에라토스테네스의 체를 사용해서 소수를 구해야할 것이라고 생각했는데, 시간 제한도 2초이고 n의 최대값이 1,000,000이기 때문에 소수판정을 할 때 2부터 자기자신 - 1로 나누는 가장 기본적인 방법을 사용해도 시간초과가 나지 않을 것이라고 판단하여 그냥 가장 간단한 방식으로 소수판정을 하도록 하였습니다.
n ~ 10억까지 모든 수를 탐색하며 팰린드롬 수를 찾고 팰린드롬 수가 맞다면 소수인지 확인 후 소수라면 해당 수를 출력 후 프로그램을 종료하도록 하였습니다.
정답 코드
fun main() {
val n = readln().toInt()
for(no in n .. Int.MAX_VALUE){
// 펠린드롬이냐?
if(isPalindrome(no)){
// 소수냐?
if(isPrime(no)) {
print(no)
return
}
}
}
}
fun isPrime(n: Int): Boolean{
// 1은 소수가아님.
if(n == 1) return false
// 2는 소수임.
if(n == 2) return true
for(div in 2 until n){
if (n % div == 0) return false
}
return true
}
fun isPalindrome(no: Int): Boolean{
val origin = no.toString()
val reversed = origin.reversed()
if(origin == reversed) return true
return false
}
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 1145번 적어도 대부분의 배수(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.01 |
---|---|
[백준] 18312 시각(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.01 |
[백준] 1236번 성 지키기(브루트 포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.06.30 |
[백준] 10448번 유레카 이론(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.06.30 |
[백준] 1316번 그룹 단어 체커[Kotlin - 코틀린] (0) | 2022.06.28 |
최근댓글