본문 바로가기

boj

백준 2023 신기한 소수

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

 

2023번: 신기한 소수

수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수

www.acmicpc.net

와 이전에 풀때 포기했던 문젠데, 백트래킹을 해보고 왔더니 정말 쉬운 문제였다.

먼져, 첫자리는 소수여야하므로 2,3,5,7이외의 수는 없다.

2,3,5,7을 시작으로 하는 n자리의 숫자를 찾으면 되는데,

한단계씩 지나갈때마다 그 단계의 신기한 소수판별을 하고, 아니면 더이상 탐색하지 않는다.

신기한 소수를 판별할 때, 그 자리만 판별한다.

ex 길이가 3일때, 길이가 1,2인 경우는 앞에서 했으므로, 3인 경우만 판별하면 끝

기분좋게푼 문제였다.

def check(strnum):
    num=int(strnum)
    if num%2==0: return False
    for i in range(3,int(num**0.5)+1,2):
        if num%i==0:
            return False
    return True

first=['2','3','5','7',]
def dfs(strnum): # str
    if len(strnum)==n:
        print(strnum)
        return

    for i in (1,3,5,7,9):
        tmp=strnum+str(i)
        if check(tmp):
            dfs(tmp)


n=int(input())
for start in first:
    dfs(start)

'boj' 카테고리의 다른 글

백준 2580 스도쿠  (0) 2022.05.09
백준4179불!  (0) 2022.05.07
백준 1991 트리 순회  (0) 2022.05.04
백준 1261 알고스팟  (0) 2022.05.03
백준 9663 n-queen  (0) 2022.05.02