14. 카펫 (완전 탐색)
        
        
      
    
          
            
            2024. 7. 18. 22:32
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 완전탐색 풀이 시간 : 7분 def solution(brown, yellow):    answer = []    avail = []    for i in range(1, int(yellow ** 0.5) + 1):        if yellow % i == 0:            avail.append([i, yellow//i])    for av in avail:        [wid, dep] = av        if 2* wid + 2 * dep + 4 == brown:            return [dep + 2, wid + 2]    return answer yellow를 기준으로 가능한 모든 yellow의 가로, 세로 길이를 avail에 append한 뒤,예상 brown의 길이..
      
        
          13. 소수 찾기 (완전 탐색)
        
        
      
    
          
            
            2024. 7. 18. 22:26
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 완전탐색풀이 시간 : 10분 from itertools import permutationsdef solution(numbers):    answer = dict()    numbers = list(numbers)    for i in range(1, len(numbers)+1):        for num in permutations(numbers, i):            if check(int(''.join(num))):                answer[int(''.join(num))] = 1    return len(answer)def check(num):    if num == 0 or num == 1:        return False    for i in range(2, i..
      
        
          12. H-index ★★ (정렬)
        
        
      
    
          
            
            2024. 7. 18. 22:13
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 정렬시간 : 10분, 인터넷 검색 *h회 이상 인용된 논문이 h개 이상* 있으면 모두 후보가 된다. def solution(citations):    answer = 0    citations.sort(reverse = True)    true = []    for i in range(len(citations)):        if i + 1  따라서, i+1 (현재 그 논문보다 많이 또는 똑같이 인용된 논문의 개수) 가 현재 논문 인용 횟수보다 많으면 h-index의 후보가 될 수 있다. 예)[9, 9, 9, 9, 9] 인 경우h = 5가 되어야 한다. 0이 아니라!이런 경우를 모두 고려하기 위해서, 주어진 조건을 만족하는 경우 모두 true 배열에 append한 뒤 true 배열의 max 값..
      
        
          11. 가장 큰 수 ★★ (정렬)
        
        
      
    
          
            
            2024. 7. 18. 21:51
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 정렬풀이 시간 : 인터넷 검색 1. 나의 풀이처음에는 permutation을 사용해서 풀이를 시도했다. from itertools import permutationsdef solution(numbers):    answer = ''    num = [str(x) for x in numbers]    ans = []    for i in permutations(num):        ans.append(''.join(list(i)))    ans.sort(reverse = True)    return ans[0] 그러나 정답은 int의 범위를 벗어날 수 있다고 되어 있었고, 이는 곧 정수 정렬을 사용할 수 없다는 의미이다.이 코드에서처럼 문자열 정렬을 하는 것은 큰 수를 찾는 데에 의미가 전혀 없..
      
        
          10. 주식가격 (스택/큐) ★★
        
        
      
    
          
            
            2024. 7. 18. 21:23
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 스택/큐풀이 시간: 5분 -> .. 인터넷 검색 def solution(prices):    answer = [0 for i in range(len(prices))]    popped = []    while prices:        curr = prices.pop(0)        for i in range(len(popped)):            if curr >= popped[i]:                answer[i] += 1        popped.append(curr)    return answer 답도 틀리고 효율성 테스트에서도 시간 초과. 뭔가 다른 방법을 생각해내야 할 듯 하다.  그냥 collections의 deque 라이브러리를 import하면 되는 거였다.  ..
      
        
          9. 다리를 지나는 트럭 ★ (스택/큐, sum함수의 시간 복잡도, deque)
        
        
      
    
          
            
            2024. 7. 18. 20:57
          
          
            
            프로그래머스/Lv. 2
          
        
        def solution(bridge_length, weight, truck_weights):    answer = 0    bridge = [0 for i in range(bridge_length)]    success = []    truckcnt = len(truck_weights)    while True:        #종료 조건 설정         if len(success) == truckcnt:            break        if bridge:            if bridge[0] == 0:                del bridge[0]            else:                success.append(bridge.pop(0))        if tr..
      
        
          8. 프로세스 ★ (빈 배열에 대해 max: runtime error)
        
        
      
    
          
            
            2024. 7. 17. 23:58
          
          
            
            프로그래머스/Lv. 2
          
        
        유형 : 구현풀이 시간: 15분 def solution(priorities, location):    answer = []    tf = [False for i in range(len(priorities))]    tf[location] = True    cnt = 0    while priorities:        curr = priorities.pop(0)        tfcurr = tf.pop(0)        if priorities and curr  간단한 queue 문제였다.풀이 자체는 어렵지 않았지만, max(priorities) 에서 자꾸 오류가 나서 애먹었다.빈 배열에 대해 max할 때 error가 난다는 것을 찾아 해결했다.
      
        
          7. 기능개발 ★(실수)
        
        
      
    
          
            
            2024. 7. 17. 23:45
          
          
            
            프로그래머스/Lv. 2
          
        
        유형: 스택/큐풀이 시간: 20분 def solution(progresses, speeds):    answer = []    lefttime = []    for i in range(len(progresses)):        days = (100 - progresses[i]) // speeds[i]        if ((100 - progresses[i]) % speeds[i]) != 0:            days += 1        lefttime.append(days)    while lefttime:        popped = lefttime.pop(0)        acc = 1        while lefttime and lefttime[0]  작은 실수를 해서 헤매었다...우선 앞..