본문 바로가기

성우리뷰

[프로그래머스] 소수찾기 lv2

answer = 0
adder = []
allsentence = {'0', '1'}

def finder(string):
    global answer
    if len(string) > 0:
        num = int(string)
    else: 
        return
    
    if num in allsentence :
        return
    allsentence.add(num)
    
    if num == 0 or num == 1:
        return
    
    flag = 0
    for i in range(2, num//2 + 1):
        if num%i == 0:
            flag = 1
    if flag == 0:
        adder.append(string)
        # answer += 1

def dfs(cnt, visit, numbers, string):
    global answer
    
    # 종료조건 : cnt가 numbers의 length에 다다랐을 때
    if cnt == len(numbers):
        finder(string)
        return
    
    finder(string)
    
    for i in range(len(numbers)):
        if visit[i] == 0:
            visit[i] = 1
            dfs(cnt+1, visit, numbers, string + numbers[i])
            visit[i] = 0

def solution(numbers):
    global answer
    length = len(numbers)
    
    visit = [0] * length
    arr = []
    
    dfs(0, visit, numbers, "")
    
    for i in range(len(adder)):
        adder[i] = int(adder[i])
    lst = list(set(adder))
    
    return len(lst)

주의할 점

 

완전탐색 - DFS

최단거리 - BFS 로 푸는거다

'성우리뷰' 카테고리의 다른 글

[Optical flow] SSL  (0) 2023.08.01
[ConvLSTM] LSTM, RNN 확장판  (0) 2023.04.28
[프로그래머스] 큰 수 만들기  (0) 2023.04.13
(softeer) 로봇이 지나간 길  (0) 2023.04.12
[softeer] 업무처리  (0) 2023.04.10