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] 작은 실수를 해서 헤매었다...우선 앞..