본문 바로가기

Algorithms & Languages

(78)
[Python/LeetCode] 1. Two Sum https://leetcode.com/problems/two-sum/Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.You may assume that each input would have exactly one solution, and you may not use the same element twice.You can return the answer in any order.덧셈하여 target을 만들 수 있는, 배열의 두 숫자 인덱스를 반환하라.* 오직 하나의 valid한 솔루션만이 존재한다. 입력 : 리스트 nums와 정수 target..
[알고리즘] 정적 배열 vs 동적 배열 vs 연결 리스트 차이점 완벽정리. 1. 정적 배열- 크기가 고정되어 있으며, 선언 시 크기를 지정해야 함.- 크기 변경이 불가능함. 크기를 늘리려면 새로운 배열을 만들어 재할당해야함.- 메모리에 연속된 공간을 할당받음. - C언어 : 그냥 `int arr[10];` 같은 기본적인 배열이 정적 배열임.- C++ : C언어와 마찬가지, `std::array`도 있음.- 자바 : 그냥 `int[] arr = new int[10];` 같은 기본적인 배열이 정적 배열임.- 파이썬 : `array.array`와 `np.array`이 정적 배열임. 2. 동적 배열- 크기가 `doubling`을 통해 자동으로 늘어남.- 초기에는 작은 크기로 시작해, 크기가 부족하면 지정된 `Growth Factor`대로 더 큰 크기의 배열을 할당한 후, 기존 배열의 ..
[알고리즘] 안정 정렬 vs 불안정 정렬 (Stable Sort vs Unstable Sort). https://cuffyluv.tistory.com/123 이전에 작성한 글 참고. data = [(1, 3, 5, 7, 9), (1, 3, 2, 4, 8), (2, 2, 3, 6, 7), (3, 1, 6, 8, 10)]result = sorted(data, key=lambda x: (x[1], x[0]))print(result) # [(3, 1, 6, 8, 10), (2, 2, 3, 6, 7), (1, 3, 5, 7, 9), (1, 3, 2, 4, 8)]위와 같은 파이썬 코드가 있다.튜플을 요소로 가지는 리스트에서, 각 요소를 정렬할 건데,첫 번째 정렬 기준을 튜플의 두 번째 요소,그리고 위의 첫 번째 정렬기준이 일치할 경우, 튜플의 첫 번째 요소를 정렬 기준으로 하여서 정렬하는 코드이다. 그러면, 튜..
[Python/LeetCode] 5. Longest Palindromic Substring https://leetcode.com/problems/longest-palindromic-substring/ 입력 : 숫자와 알파벳으로 이루어진 문자열 s(소문자만 포함인가?)출력 : 가장 긴 팰린드롬 부분 문자열Input: s = "babad"Output: "bab"Explanation: "aba" is also a valid answer.Input: s = "cbbd"Output: "bb" 팰린드롬에 관한 개념은 다음 글 참고.https://cuffyluv.tistory.com/117 [Python/leetcode] 125. Valid Palindromehttps://leetcode.com/problems/valid-palindrome/description/주어진 문자열이 팰린드롬인지 아닌 지 판별하..
[Python] sorted() 함수와 list.sort() 메서드 설명 및 비교. 1. sorted() 함수- `iterable 객체(리스트, 튜플, 문자열 등)`를 정렬하여 `정렬된 새로운 리스트`를 반환하는 내장 함수.- 쉽게 말해, `iterable`를 받아서 `list`를 반환함.문법result = sorted(iterable, key=None, reverse=False)매개변수1. iterable (필수)- 정렬 대상이 되는 iterable 객체.- ex. `str, list, tuple, dict의 key 등`2. key (선택, 기본값 : None)- 정렬 기준을 지정하는 함수.- 각 요소에 대해 `key`로 전달된 함수가 호출되며, 반환된 값이 정렬 기준이 됨.- 기본값은 `None`로 이 경우 요소 자체를 기준으로 정렬.3. reverse (선택, 기본값 : False..
[Python/LeetCode] 49. Group Anagrams https://leetcode.com/problems/group-anagrams/ 입력 : 소문자 영어 단어들로 이루어진 문자열 배열(리스트) `strs`출력 : `strs` 내의 groups of anagram으로 이루어진 2차원 리스트Input: strs = ["eat","tea","tan","ate","nat","bat"]Output: [["bat"],["nat","tan"],["ate","eat","tea"]]Input: strs = [""]Output: [[""]]Input: strs = ["a"]Output: [["a"]]직관 및 접근당장 드는 생각은,일단 strs를 순회를 돌거임 for문으로. 대신 첫 단어는 미리 어떤 리스트에 할당시켜둠.그리고 그 다음 단어부터, 이게 이미 존재하는 리스트..
[Python] 문자열 치환 메서드 성능 비교 - str.replace(), re.sub(), str.translate() https://cuffyluv.tistory.com/120 [Python/leetcode] 819. Most Common Wordhttps://leetcode.com/problems/most-common-word/description/가장 흔한 단어.금지된 단어를 제외하고, 가장 흔하게 등장하는 단어를 출력해라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시cuffyluv.tistory.com- 해당 문자열 치환 문제를 풀고 정리하면서, 같은 문제를 `str.replace`, `re.sub`, `str.translate` 세 함수 및 메서드 모두로 풀 수 있음을 확인하였다.- 따라서, 저 세 함수 및 메서드 각각을 어떤 상황에 사용해야 할지 그 특성과 장단점 및 성능을 비교해 정리해..
[Python/LeetCode] 819. Most Common Word https://leetcode.com/problems/most-common-word/description/가장 흔한 단어.금지된 단어를 제외하고, 가장 흔하게 등장하는 단어를 출력해라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시한다.정답은 소문자 형태로 출력되어야 한다. 입력 : 원본 문자열 str, 금지된 단어 리스트 banned출력 : 가장 흔하게 등장하는 단어 하나로 이루어진 문자열Input: paragraph = "Bob hit a ball, the hit BALL flew far after it was hit.", banned = ["hit"]Output: "ball"  직관 및 접근잠깐!!해당 글에 사용된 세 함수 및 메서드에 대해, 본 블로그에 따로 글로 정리했으니아..