[LeetCode] 파이썬 알고리즘 인터뷰 리뷰 복습하며 다시 풀기 (2020.11.10)
파이썬 알고리즘 인터뷰 책을 기반으로 공부했는데 (다른 알고리즘 시험에서 안나올 것 같은 뒷 부분이나 중간에 링크드 리스트 부분은 좀 넘겼다) 까먹은 부분 복습할 겸 처음부터 다시 풀어보았다
요즘 사이드 프로젝트 때문에 리액트만 하고 있어서 자꾸 알고리즘을 푸는 감각을 잃는 것 같다 다시 건들어보려고 한다
125번. 펠림드롬 - 한 번에 성공
leetcode.com/problems/valid-palindrome/submissions/
from collections import deque
class Solution:
def isPalindrome(self, s: str) -> bool:
s=[c.lower() for c in s if c.isalnum()]
return s==s[::-1]
344번. 문자열 뒤집기 - 한 번에 성공
제자리 정렬을 해야한다
class Solution:
def reverseString(self, s: List[str]) -> None:
s.reverse()
937번 순서 재정렬하기 + lambda sort
문제가 무슨 말인지 매번 헷갈리는 문제
숫자는 입력된 순서 그대로 문자로 구성된 로그는 뒤의 숫자들 기준으로 정렬 후 식별자로 정렬한다
class Solution:
def reorderLogFiles(self, logs: List[str]) -> List[str]:
letter,num=[],[]
for log in logs:
if log.split()[1].isdigit():
num.append(log)
else:
letter.append(log)
letter.sort(key=lambda x: (x.split()[1:],x.split()[0]))
return letter+num
함수 형태로 만들어서 넣어줘도 된다
def func(X):
return x.split()[1],x.aplit()[0]
letter.sort(key=func)
819번 가장 흔한 단어
defaultdict(int)로 개수 세서 return max(x, key=x.get) 이나
Collections.Counter을 써서 most_common이라는 함수를 쓴다
정규표현식은 공부안했어서 매번 찾아서 한다
from collections import Counter
import re
class Solution:
def mostCommonWord(self, paragraph: str, banned: List[str]) -> str:
x=re.sub(r'[^\w]',' ',paragraph)
res=[]
for p in x.lower().split():
if p not in banned:
res.append(p)
c=Counter(res)
return c.most_common(1)[0][0]
49번 그룹 아나그램
정렬 시 같은 단어가 되는 것들을 묶어서 배열 형태로 리턴해준다
리트코드는 그냥 res.values()를 리턴해줘도 된다
from collections import defaultdict
class Solution:
def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
res=defaultdict(list)
for str in strs:
res[''.join(sorted(str))].append(str)
ans=[]
for k in res.values():
ans.append(k)
return ans
sorted함수에도 key를 넣을 수 있다 sorted(a,key=len) 이런식으로 사용한다
'Leetcode' 카테고리의 다른 글
[Leetcode] 20. valid parentheses (python, easy) (0) | 2020.11.25 |
---|---|
[Leetcode] two sum (python, javascript) (0) | 2020.11.23 |
[LeetCode] 7.Reverse Integer (문자열 연산) (0) | 2020.11.09 |
[LeetCode] 15. 3sum (python, javascript, two pointer) (0) | 2020.10.31 |
[LeetCode] 42. trapping rain water (python, javascript, two pointer) (0) | 2020.10.31 |