본문 바로가기

분류 전체보기57

짝지어 제거하기 문제풀이 효율성 실패 처음 문제를 해결한 솔루션은 하드코딩적인 방법을 사용했다. 문제 그대로 같은 부분을 발견하면 문자열에서 잘라내고 그 전부터 다시 검사하는 방식을 사용했다. 하지만 이는 효율성에서 점수를 받지 못했다. 효율성 반 성공 역시 위의 효율성 실패는 알고리즘을 제대로 활용하지 못한 점에 있다. 따라서 어떤 알고리즘을 사용해야 적절한 지 고민해본 결과 stack이 좋다고 판단했다. 하지만 stack을 활용하긴 했지만 심플한 솔루션을 내지 못했다. 효율성 해결 def solution(s): answer = 0 s = list(s) stack = [] for word in s: if stack: if stack[-1] == word: stack.pop() else: stack.append(word.. 2021. 5. 25.
내적 문제풀이 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.
Do it! 자료구조와 함께 배우는 알고리즘 입문 : 파이썬 편 - 02 기본 자료구조와 배열 요약 배열(array) 묶음 단위로 값을 저장하는 자료구조 원소(element): 배열에 저장된 객체 하나하나 인덱스(index): 각 원소는 0, 1, 2... 순으로 index를 부여받는다. 튜플(tuple) 원소에 순서를 매겨 결합한 것으로 원소를 변경할 수 없는 이뮤터블(immutable) 자료형이다. 원소를 쉼표로 구분하여 나열한 뒤 결합 연산자 ()로 둘러싸는 방식으로 생성한다. 원소가 1개인 경우 원소 뒤에 쉼표를 반드시 입력해야 한다. 쉼표가 없을 경우 단순 변수로 여긴다. 리스트(list) 원소를 변경할 수 있는 뮤터블(mutable) 자료형이다. 연산자 [] 안에 원소를 쉼표로 구분하여 표기하여 생성한다. 슬라이스(slice) 리스트 또는 튜플의 원소 일부를 연속해서 또는 일정한 간격으로 꺼.. 2021. 5. 24.