알고리즘

[프로그래머스 Lv1] 소수 만들기 (Python)

lwkejpf 2022. 7. 6. 18:12

 


 

def solution(nums):
    answer = 0
    li = set()
    
    for i in range(len(nums)-2) :
        for j in range(i+1, len(nums)-1) :
            for k in range(j+1, len(nums)) :
                li.add(nums[i] + nums[j] + nums[k]) 
                
    li = list(li)
    li.sort(reverse=True)
    
    for idx in li :
        cnt = 0
        for i in range(idx-1, 1, -1) :
            if idx % i == 0 :
                cnt += 1
                break
        if cnt == 0 :
            answer += 1
            
    return answer

 

 

?? 분명 테케는 다 맞았잔ㅎ아.... 왜 배신해

라며 한참 헤매다가 드디어 틀렸던 이유를 알아냄

 

 

"nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수"


ex) 1, 2, 3, 4, 5, 6, 7 가 주어질 경우

소수 11이 되는 [1, 3, 7] 의 경우와 [1, 4, 6] 의 경우는 서로 다른 경우이기 때문에

따로따로 카운트 되어야 함 ....

 

그래서 set() 으로 설정해두면 안 됐던거임....ㅜㅜㅜㅜㅜ 바보다 짅자

 


 

def solution(nums):
    answer = 0
    li = []
    
    for i in range(len(nums)-2) :
        for j in range(i+1, len(nums)-1) :
            for k in range(j+1, len(nums)) :
                li.append(nums[i] + nums[j] + nums[k]) 
                
    li.sort(reverse=True)
    
    for idx in li :
        cnt = 0
        for i in range(idx-1, 1, -1) :
            if idx % i == 0 :
                cnt += 1
                break
        if cnt == 0 :
            answer += 1
    return answer

 

문제를 잘 읽자 .. ^-^