안녕하심까! 오랜만에 공부 글로 돌아왔네요. 요즘 medium 레벨의 릿코드 문제들을 풀면서 Greedy Algorithm을 사용하는 문제들이 많이 나오기 시작했습니다. 하지만 저는 대학교에서 이것을 들어본 적도 풀어본 적도 없었기 때문에 결국에 막혀서 NeetCode의 영상들을 많이 참고하면서 풀고 있습니다. 연속 3문제를 유튜브로 찾아보니까 자존심이 상하더군요 하하! 그래서 아싸리 인터넷으로 찾아서 공부해보기로 했습니다. 그리디 알고리즘?) 그리디 알고리즘은 제가 일반적으로 생각하는 알고리즘들과 다릅니다. 제가 알고있는 Binary Search나 DFS (Depth-First-Search) 알고리즘들은 정해져 있는 틀, 풀이 방식, 그리고 사용되는 문제 형태들이 정해져 있는 느낌입니다. 하지만 그리디..
간단 설명) 오름차순이나 내림차순으로 정렬된 배열에서 검색 범위를 반씩 줄여가며 검색 대상을 효율적으로 찾는 검색 left = 0, right = n-1, center = (left + right) // 2 검색하고자 하는 원소에 따라 left/right과 center를 업데이트해주는 방식 정렬된 배열) 이진검색을 사용하기 위해선 배열이 정렬되어있어야 합니다. 오름차 순 배열을 하나 만듭시다. sortedArray = [1, 3, 6, 7, 17, 21, 34, 36, 50, 51] target = 21 원리) 선형검색과 이진검색의 차이점은 검색의 범위를 줄이는 과정입니다. 선형검색이 검색마다 고작 1만큼 검색 범위를 줄여나간다면 이진검색은 검색마다 절반의 검색 범위를 줄여나갑니다. 그림을 봅시다. 가운..
간단설명) Shallow Copy 원본의 1차 객체만을 복사. 그 객체보다 아래의 객체를 복사하진 않음 그래서 원본에서 1차 객체 아래의 객체에 변동이 있으면 복사본에서도 변동이 있음 Deep Copy 원본의 1차 객체와 그 밑 객체를 모두 복사함. 그래서 원본에서 변동이 있더라도 복사본에는 변동이 없음 귀염뽀짝) 일단, 간단한 리스트 하나를 만들어보죠. a = [[1, 2], [3, 4]] 아, 정말이지 귀염뽀짝한 리스트 a입니다. b??) 이번엔 a를 복사하여 친구 b를 만들어봅시다. 리스트에는 copy()라는 간편한 메서드가 있습니다. 말 그대로 복사를 해주죠. b = a.copy() 이렇게 복사를 완료하면 a도 [ [1, 2], [3, 4] ] b도 [ [1, 2], [3, 4] ] 으로 설정됩니..
간단 설명) 함수의 parameter에 argument가 보내졌을때 처리하는 파이썬만의 독특한 방식입니다. 만약 함수에 mutable argument가 전달된다면 새로운 객체의 생성 없이 객체의 값이 변경됩니다. 그래서 함수가 만약 parameter의 값을 건든다면 argument의 값도 건들여지는거죠. 만약 함수에 immutable argument가 전달된다면 새로운 객체가 생성되서 parameter와 argument가 각각 참조하는 객체가 달라집니다. 그래서 함수가 parameter를 건들여도 argument는 그대로인겁니다. Foo Function) def foo(n): n = n + 1 return n x = 5 foo(x) 파이썬에서 foo function의 paramenter인 n으로 argu..