본문 바로가기

Computer Science

(26)
[파이썬 알고리즘 인터뷰] 8. 배열 파티션1 https://github.com/onlybooks/algorithm-interview 1. 문제 leetcode 561. Array Partition I 2n개의 숫자로 이루어진 정수형 배열 nums를 2개의 원소로 이루어진 n개의 부분 배열로 나눠야한다. 단, 각 배열의 최솟값의 합이 최대가 되도록 한다. 2. 내 풀이 부분 배열의 최솟값들이 커지기 위해서는 같은 부분 배열의 원소 크기가 최대한 비슷해야한다. 이를 위해서는 크기 순서대로 원소들을 묶어 부분 배열을 만들어야 한다. 문제를 풀기 위해 먼저 주어진 배열을 오름차순으로 정렬했다. 그리고 짝수번째에 위치한 숫자가 각 부분배열의 최솟값이기 때문에 해당 숫자들을 모두 더해서 결과를 구했다. def arrayPairSum(self, nums: Li..
[파이썬 알고리즘 인터뷰] 7. 빗물 트래핑 https://github.com/onlybooks/algorithm-interview 1. 문제 leetcode 42. trapping rain water 높이를 입력받아 비온 후 얼마나 많은 물이 쌓일 수 있는지 계산하라. 2. 스택을 이용한 내 풀이 스택에 높이가 낮아지는 곳의 좌표를 저장하는 방법으로 문제를 풀었다. 먼저 주어진 배열의 왼쪽부터 높이를 확인하면서 높이가 낮아진다면 해당 지점의 좌표, 바닥의 높이를 스택에 저장한다. 그러던 중 높이가 높아지는 지점 a가 있다면 스택에서 a보다 높은 위치의 좌표가 나오기 전까지 좌표를 꺼낸다. 그리고 꺼낸 좌표와 a의 좌표, 바닥의 높이를 이용해 추가되는 물의 양을 계산하고 바닥의 높이를 업데이트 한다. 이 방법의 시간복잡도는 O(n)이고, 평균 실행..
[파이썬 알고리즘 인터뷰] 6. 두 수의 합 https://github.com/onlybooks/algorithm-interview GitHub - onlybooks/algorithm-interview: 95가지 알고리즘 문제 풀이로 완성하는 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub. github.com 1. 문제 leetcode 1. Two Sum 정수형 배열 nums와 정수 target을 입력받아 target을 만들 수 있는 배열의 두 인덱스 값을 리턴하라 2. brute force 가능한 모든 조합을 더해서 target과 일치하는지 확인하는 방법이다. O(n^2)의 시간복잡..
[파이썬 알고리즘 인터뷰] 5. 가장 긴 팰린드롬 부분 문자열 https://github.com/onlybooks/algorithm-interview GitHub - onlybooks/algorithm-interview: 95가지 알고리즘 문제 풀이로 완성하는 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub. github.com 1. 문제 5. Longest Palindromic Substring 가장 긴 팰린드롬 부분 문자열을 출력하라 팰린드롬: 뒤집어도 같은 내용인 것 ex) "aba", "aaaaa" 2. 내 풀이 def longestPalindrome(self, s: str) -> str: for..
[파이썬 알고리즘 인터뷰] 4. 그룹 애너그램 https://github.com/onlybooks/algorithm-interview GitHub - onlybooks/algorithm-interview: 95가지 알고리즘 문제 풀이로 완성하는 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub. github.com 1. 문제: leetcode 49. Group Anagrams 문자열 배열을 받아 애너그램 단위로 그룹핑하라 2. 풀이 def groupAnagrams(self, strs: List[str]) -> List[List[str]]: sorted_strs = collections.de..
[파이썬 알고리즘 인터뷰] 3. 가장 흔한 단어 https://github.com/onlybooks/algorithm-interview 1. 문제: 리트코드 819. Most Common Word 금지된 단어를 제외한 가장 흔하게 등장하는 단어를 출력하라. 대소문자 구분은 하지 않는다. 2. 내 코드 def mostCommonWord(self, paragraph, banned): #전처리 paragraph = paragraph.lower() paragraph = re.sub('["!?\',;.".]', ' ', paragraph) #단어 개수 세기 dict = {} for word in paragraph.split(): if word in dict.keys(): dict[word] += 1 elif word not in banned: dict[word..
[파이썬 알고리즘 인터뷰] 2. 문자열 뒤집기 github.com/onlybooks/algorithm-interview 1. 문제: 리트코드 344.Reverse String 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며, 리턴 없이 리스트 내부를 직접 조작하라 2. 내 코드 def reverseString(self, s): for i in range(len(s)): s.insert(i, s.pop()) 3. 투 포인터를 이용한 풀이 def reverseString(self, s: List[str]) -> None: left, right = 0, len(s) - 1 while left < right: s[left], s[right] = s[right], s[left] left += 1 right -= 1 4. 파이썬다운 풀이 def rev..
[파이썬 알고리즘 인터뷰] 1. 로그 파일 재정렬 github.com/onlybooks/algorithm-interview GitHub - onlybooks/algorithm-interview: 95가지 알고리즘 문제 풀이로 완성하는 95가지 알고리즘 문제 풀이로 완성하는 코딩 테스트. Contribute to onlybooks/algorithm-interview development by creating an account on GitHub. github.com 1. 문제: 리트코드 937. Reorder Log Files 로그를 재 정렬하라. 기준은 다음과 같다. 1) 로그의 가장 앞부분은 식별자다. 2) 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 3) 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다. 4) 숫자 ..