본문 바로가기
반응형

문자열6

[LeetCode] 937. Reorder Log Files [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (로그 파일 재정렬) 로그의 가장 앞부분은 식별자다. 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 식별자는 순서에 영향을끼치지 않지만, 문자가 동일할 경우 식별자순으로 한다. 숫자 로그는 입력 순서대로 한다. 2. 풀이 람다와 + 연산자를 이용한 풀이 isdigit()을 이용해 숫자와 문자 로그를 구분한다. 람다를 통해 식별자가 아닌 로그 부분을 먼저 정렬 후 식별자를 정렬한다. letters.sort(key=lambda x: (x.split()[1:], x.split()[0])) 문자열 [1:]를 통해 정렬을 하고, 동일한 경우 후순위로 식별자 [0]로 정렬한다. + 연산자를 통해 문자와 숫자 로그를 합친다. .. 2021. 11. 23.
[LeetCode] 819. Most Common Word [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (가장 흔한 단어) 금지된 단어를 제외한 가장 흔하게 동장하는 단어를 출력하라. 대소문자 구분을 하지 않으며, 구두점(마침표, 쉽표 등) 또한 무시한다. 2. 풀이 정규식과 해시를 이용한 풀이 정규식에서 \w는 단어 문자를 뜻하며, ^은 not을 의미한다. 따라서 re.sub(r'[^\w]', ' ', 문자열)는 단어 문자가 아닌 모든 문자를 공백으로 치환한다. defaultdict(int)를 통해 단어의 빈도수를 저장한다. max함수를 통해 딕셔너리의 값이 가장 큰 key를 출력한다. max(dic.keys(), key=lambda k: dic[k]) key=lambda k: dic[k.. 2021. 11. 23.
[LeetCode] 49. Group Anagrams [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (그룹 에너그램) 문자열 배열을 받아 애너그램 단위로 그룹핑하라. 애너그램이란 문자를 재배열하여 다른 뜻을 가진 단어로 바구는 것 ('문전박대' -> '대박전문') 2. 풀이 해시 를 이용한 풀이 sorted()를 이용해 문자열 정렬 오름차순 sorted(arr) 내림차순 sorted(arr, reverse=True) defaultdict를 통해 애너그럼 그룹핑 3. 코드 해시를 이용한 풀이 from collections import defaultdict class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]].. 2021. 11. 23.
[LeetCode] 5. Longest Palindromic Substring [Python(파이썬)] '파이썬 알고리즘 인터뷰'를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (가장 긴 팰린드롬 부분 문자열) 가장 긴 펠린드롬 부분 문자열을 출력하라. (정답이 여러개 일 수 있는데 나는 가장 첫번째 부분 문자열을 출력하겠다.) 2. 풀이 투 포인터를 이용한 풀이 (출처) 그림과 같이 2칸, 3칸으로 구성된 투 포인터를 슬라이딩 윈도우처럼 오른쪽으로 한칸씩 이동하며 팰린드롬을 확인한다. 3. 코드 class Solution: def longestPalindrome(self, s: str) -> str: # 팰린드롬 판별 및 포인터 확장 def expand(left, right): while left >= 0 and right 2021. 11. 23.
[LeetCode] 344. Reverse String [Python(파이썬)] &#39;파이썬 알고리즘 인터뷰&#39;를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (문자열 뒤집기) 문자열을 뒤집는 함수를 작성하라. 입력값은 문자 배열이며,리턴 없이 리스트 내부를 직접 조작하라. 2. 풀이 투 포인터를 이용한 풀이 reverse()를 이용한 문제 풀이 3. 코드 투 포인터를 이용한 풀이 class Solution: 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 reverse()를 이용한 풀이 class Solution: def reverseString(.. 2021. 11. 23.
[LeetCode] 125. Valid Palindrome [Python(파이썬)] &#39;파이썬 알고리즘 인터뷰&#39;를 보고 작성한 글입니다. 😀 문제 👉 1. 문제 (유효한 팰린드롬) 주어진 문자열이 펠린드롬인지 확인하라. 대소문자를 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 2. 풀이 알파벳과 숫자가 아닌 경우 제외 소문자 변환 (대소문자를 구분하지 않으므로) 문자의 앞뒤 비교 3. 코드 리스트를 이용한 풀이 class Solution: def isPalindrome(self, s: str) -> bool: strs = [] for char in s: if char.isalnum(): # 알파벳과 숫자인지 확인 strs.append(char.lower()) while len(strs) > 1: if strs.pop(0) != strs.pop(): return Fals.. 2021. 11. 23.
반응형