본문 바로가기

코딩테스트19

내적 문제풀이 def solution(a, b): answer = 0 for idx in range(len(a)): answer += a[idx] * b[idx] return answer 알고리즘 다른 사람 풀이 중 더 깔끔하게 푼 해결점이 있어서 여기에 사용된 zip()에 대해 알아본다. zip() zip() 메서드는 2개 이상의 시퀀스(문자열, 튜플, 리스트, 바이트 배열, 바이트 등)를 인수로 취하여, 짧은 길이의 시퀀스를 기준으로 각 항목이 순서대로 1:1 대응하는 새로운 튜플 시퀀스를 만든다. 파이썬 3부터는 zip() 등의 결과가 객체로 반화되므로 내용을 확인하려면 list로 형 변환을 해야한다. 예를 들어 >>> a =[1, 2, 3, 4, 5] >>> b = ['a', 'b', 'c', 'd'].. 2021. 5. 25.
더 맵게 문제풀이 효율성 실패 이번 코딩 문제는 힙을 이용해야 하는 문제인데 내가 처음 문제를 풀었던 코드는 한 번 과정을 거칠 때마다 sort()를 이용해 정렬을 하였다. 결국 이것이 비효율적인 시간을 지출해 문제를 통과하지 못했다. 효율성 해결 import heapq def solution(scoville, K): answer = 0 scoville.sort() if scoville[0] == 0 and scoville[1] == 0: return -1 heapq.heapify(scoville) while(scoville[0] 1): x = heapq.heappop(scoville) y = heapq.heappop(scoville) new_scoville = min(.. 2021. 5. 24.
가장 먼 노드 문제풀이 효율성 실패 def graph(arrived, start, edge, n): while(len(arrived) < n): new_start= [] for point in start: for root in edge[:]: if point in root: root.remove(point) list_root = list(root) if not list_root[0] in arrived: new_start.append(list_root[0]) arrived.add(list_root[0]) edge.remove(root) start = new_start[:] return start def solution(n, edge): answer = 0 arrived = {1, } edge_set = [set(roo.. 2021. 5. 23.