본문 바로가기

문제 풀이/leetcode8

[leetcode] most common word Most Common Word paragraph와 금지 단어 배열 banned 가 주어질때 banned에 속하지 않은 단어중아 가장 많이 나온 단어를 리턴 최소 하나의 단어는 banned 에 속하지 않음을 보장 문자열의 대소문자 구분은 없고 리턴값은 소문자로 이루어진 단어 Solution 1. paragraph를 단어 리스트로 만들기 쉼표, 마침표 등의 문자는 제거 모든 문자를 소문자로 바꾸고 공백 문자를 기준으로 단어로 나누기 2. 단어별 개수 Counter로 카운팅 banned에 포함된 단어는 버리기 Code import re from collections import Counter class Solution: def mostCommonWord(self, paragraph: str, banned: L.. 2022. 4. 19.
[leetcode] valid palindrome palindrome 앞으로 읽어도 뒤로 읽어도 동일 valid palindrome 대소문자를 구분하지 않고, Alphanumeric 아닌 문자는 제외 주어진 phrase 가 palindrome 인지 여부를 bool 로 리턴 대문자 소문자 변환 s = s.upper() # 대문자 변환 문자열 반환 s = s.lower() # 소문자 변환 문자열 반환 Alphanumeric만 추출하기 s = ''.join( c for c in s if c.isalnum()) # 정규표현식 import re s = re.sub('\W','',s) # 문자열에서 \W(문자나 숫자가 아닌것)를 찾아서 제거한 문자열 반환 Solution start, end 두개의 index 를 이용 각각 앞, 뒤에서 Alphanumeric인 문자.. 2022. 2. 16.
course schedule Course Schedule prerequisite : [a,b] = a course를 완료하기 위해 b course를 먼저 완료 해야함 numCourses : 코스 개수, prerequisites 가 주어졌을때 전부 완료가능하면 True 아니면 False Solution1 각 course 를 node 로 prerequisite 를 edge 로 생각하면 directed graph로 표현가능 directed graph에 cycle 이 존재하는 지 판별해서 존재하는 경우 False, 없으면 True dfs를 이용해 한 노드에서 출발하는 경로중에 cycle이 존재하는 지 검사할수 있음(has_cycle) 방문한 노드 기록(visitied) 해당 노드를 출발점으로 하는 어떤 경로에도 cycle이 없다고 결정(f.. 2022. 1. 21.
number of islands number of islands m x n 의 2차원 그리드 "1" 은 land,"0"은 water를 의미 그리드 공간에서 islands(연결된 "1")의 개수 반환 solution dfs를 이용 m x n 의 각 점들중 "1"인점 을 출발점으로 해서 도달가능한 모든점을 방문(dfs) 하고, 섬의개수 1증가 시키기 한번 방문한 점은 "0" 으로 표시 grid 상에서 한 점(i,j)의 방문가능한 이웃한 점은 상하좌우에 위치하면서, 그리드 범위 이내이고 값이 "1" 인점 code class Solution(object): def numIslands(self, grid): """ :type grid: List[List[str]] :rtype: int """ # m , n , dirs 초기화 m, n = len.. 2022. 1. 13.