반응형

분류 전체보기 823

[자료구조] 연결 리스트를 알아보고 파이썬으로 구현하기

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 연결 리스트(Linked List) 연결 리스트는 데이터 요소의 선형 집합으로, 데이터의 순서가 메모리에 물리적인 순서대로 저장되지 않습니다. 연결 리스트는 배열과 함께 가장 기본이 되는 대표적인 선형 자료구조 중 하나로 다양한 추상 자료형 구현의 기반이 됩니다. 동적으로 새로운 노드를 삽입하거나 삭제하기가 간편하며, 연결 구조를 통해 물리 메모리를 연속적으로 사용하지 않아도 되기 때문에 관리가 쉽다는 장점이 있습니다. 연결 리스트는 배열과는 달리 특정 인덱스에 접근하기 위해서는 전체를 순서대로 읽어야 하므로 상수 시간에 접근할 수 없습니다. 즉 탐색에는 O(n)이 소요됩니다. 반면, 시작 또는 끝 지점에..

Python/알고리즘 2021.02.13

[파이썬 알고리즘 인터뷰] 12. 주식을 사고 팔기 가장 좋은 시점

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 12. 주식을 사고팔기 가장 좋은 시점 리트코드 121. Best Time to Buy and Sell Stock 문제입니다. leetcode.com/problems/best-time-to-buy-and-sell-stock/ 풀이 price의 최소값을 계속 갱신하면서, 가격 차이를 계산하여 차이가 클 경우 최대값을 저장하는 풀이입니다. def maxProfit(self, prices): profit = 0 min_price = sys.maxsize # 최소값과 최댓값을 계속 생신 for price in prices: min_price = min(min_price..

Python/알고리즘 2021.02.13

[파이썬 알고리즘 인터뷰] 11. 자신을 제외한 배열의 곱

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 11. 자신을 제외한 배열의 곱 리트코드 238. Product of Array Except Self 문제입니다. leetcode.com/problems/product-of-array-except-self/ 풀이 모든 nums 값을 곱한 다음에 nums[i]로 나눠주는 풀이를 떠올렸지만, 나눗셈을 하지 않는 제약조건이 있어서 다른 방법을 생각해야 했습니다. 도저히 생각이 안나서 책에 있는 풀이를 참고했습니다. 책에는 왼쪽 곱셈 결과에 오른쪽 곱셈 결과를 곱하는 풀이방법이 나와있었습니다. def productExceptSelf(self, nums): p = 1 o..

Python/알고리즘 2021.02.13

[확률론] 이산형 확률분포 - 음이항 분포

고려대학교 김성범 교수님의 확률/통계 강의와 교재 'Sheldon Ross, A First Course in Probability (10th edition)' 를 공부하고 정리한 내용입니다. 음이항 분포(Negative Binomial Distribution) 음이항 분포는 기하 분포의 확장된 형태입니다. 성공 확률이 p인 베르누이 시행을 k번 성공할 때 까지 반복하여 발생하는 확률들의 패턴이 음이항 분포입니다. 확률 변수 X는 k번 성공을 하기 위해 시행하는 횟수로 정의됩니다. 확률질량함수는 다음과 같습니다. n-1번 시행까지 r-1번 성공, n-r번 실패가 발생하고 n번째에 성공하는 확률을 나타냅니다. 예시 5번째 시행에서 3번째 성공이 나타날 확률을 구하는 문제입니다. 5번째 시행에서 3번째 성공이..

수학/확률론 2021.02.13

[파이썬 알고리즘 인터뷰] 10. 배열 파티션 I

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 10. 배열 파티션 I 리트코드 561번 문제입니다. leetcode.com/problems/array-partition-i/ 풀이 nums를 정렬하고 for문으로 짝수 index를 가져옵니다. 해당 index와 다음 index의 값중 최소값을 results에 추가한 뒤 모든 값을 더해서 return 합니다. def arrayPairSum(self, nums): nums.sort() results = [] for i in range(0,len(nums),2): results.append(min(nums[i],nums[i+1])) return sum(results..

Python/알고리즘 2021.02.12

[파이썬 알고리즘 인터뷰] 9. 세 수의 합

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 9. 세 수의 합 리트코드 15번 문제입니다. leetcode.com/problems/3sum/ 풀이 책에서는 브루트포스, 투 포인터 풀이가 나와있습니다. 핵심은 중복된 값을 건너뛰기를 구현하는 것입니다. 1. 브루트 포스 풀이 def threeSum(nums): result = [] for i in range(len(nums)-2): # 중복된 값 건너 뛰기 if i > 0 and nums[i] == nums[i-1]: continue for j in range(i+1,len(nums)-1): if j > 0 and nums[j] == nums[j-1]: co..

카테고리 없음 2021.02.12

[파이썬 알고리즘 인터뷰] 8. 빗물 트래핑

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 8. 빗물 트래핑 리트코드 42번 문제입니다. leetcode.com/problems/trapping-rain-water/ 풀이 hard 문제답게 손도 못대보았습니다. 책에는 두 가지 풀이법이 제시되었습니다. 1. 투포인터를 활용한 풀이 양쪽의 포인터가 제일 높은 높이를 향해서 한 칸씩 이동합니다. 이동하면서 이전 값과 현재 값의 차이로 물의 양을 계산합니다. def trap(self, height): if not height: return 0 left, right = 0, len(height)-1 left_max, right_max = height[left],..

Python/알고리즘 2021.02.12

[확률론] 이산형 확률분포 - 기하분포

고려대학교 김성범 교수님의 확률/통계 강의와 교재 'Sheldon Ross, A First Course in Probability (10th edition)' 를 공부하고 정리한 내용입니다. 기하 분포(Geometric Random Variable) 독립적인 베르누이 시행을 첫 번째로 성공할 때까지 시행하는 것입니다. 확률 변수 X는 첫 번째로 성공할 때까지 시행한 횟수 입니다. 확률 함수는 다음과 같이 정의됩니다. n-1번 실패하고 n번째 성공할 확률 입니다. 예를 들어, 5번 시행때 첫 성공이 발생했다면 확률질량함수는 다음과 같이 정의할 수 있습니다. P{X=5} = $(1-p)^4p$ 기하 분포는 파라미터 p를 지닌 기하 확률질량함수로부터 발생된 확률들의 분포입니다. 그리고 기하확률질량함수의 모든 ..

수학/확률론 2021.02.12

[파이썬 알고리즘 인터뷰] 7. 두 수의 합

이 포스팅은 파이썬 알고리즘 인터뷰를 공부하면서 정리한 내용입니다. 출처 : 파이썬 알고리즘 인터뷰 코드 출처 : 파이썬 알고리즘 인터뷰 깃허브 7. 두 수의 합 리트코드 1번 문제입니다. leetcode.com/problems/two-sum/ 풀이 딕셔너리를 활용한 풀이입니다. 키를 num, 값을 인덱스로 저장합니다. for 문으로 nums에서 num을 하나하나씩 꺼내보면서 딕셔너리에 target - num에 해당하는 키가 존재하는지 확인합니다. def twoSum(self, nums, target): nums_map = {} for i, num in enumerate(nums): if target - num in nums_map: return [nums_map[target - num], i] nums..

Python/알고리즘 2021.02.11

[논문 리뷰] SPPnet (2014) 리뷰, Spatial Pyramid Pooling Network

이번에 리뷰할 논문은 SPPnet 'Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition' 입니다. SPPnet 등장 배경 SPPnet은 CNN 구조가 고정된 입력 이미지 크기를 입력으로 취하는 데에서 발생한 문제점을 개선하기 위해 고안되었습니다. 기존 CNN은 고정된 입력 크기를 맞춰주기 위해서 crop, wrap을 적용합니다. 참고로, crop과 warp은 classification에서는 data augmentation, detection에서는 region proposal을 입력 사이즈에 맞춰주기 위해 이용합니다. crop과 warp을 적용하면 문제점이 발생합니다. crop을 적용하면 crop된 구역만 CNN을 통과..

반응형