1. two sum / 2. longest substring without repeating characters
leetcode 65.counting stairs
문제 완전히 같은 그래프여야 하나, 같은 노드여서는 안됨. Node 클래스가 따로 있음 풀이 dfs (stack 이용) 어차피 최대 100개이므로 미리 visited 리스트와 출력 node들을 담은 nodeList를 생성함 nodeList = [Node(i) for i in range(101)]로 미리 값을
문제 겹쳐지지 않는 구간이 들어있는 intervals가 인풋으로 들어옴 intervals[i] = [starti, endi] start_i 순으로 정렬되어 있음 오름차순이 성립되도록 newintervals를 삽입하라 + 구간이 겹치지 않아야함 겹치는 구간은 필요 하면 merge 해라 ---- 풀이 첫 시도 range(0, max+1)의 리스트를 만들자(...
문제 m*n 메트릭스 하나가 0이면 그 row, col 0으로 만들어. in place 풀이 in place이니까 dfs 하기 어려워 첫 순회 시에 0의 인덱스 저장 인덱스 이용해서 그 행과 열 값 변경 결과 1트에 성공! ![](https://images.velog.io/images/twinklesu
문제 singly linked list의 head가 주어짐 reverse하라 풀이 recursion 머리에서 꼬리로 내려갔다가, 다시 올라오면서 next를 바꿔줌 isOriginalHead boolean 변수를 둬서, 원래 머리 즉, 새로운 꼬리는 next = None 으로 처리해줌 사실 처음에 recursion하면 느릴것 같아서 stack을 이용하려...
문제 트리가 주어졌을 때, root 부터 가장 깊은 depth 구하기 풀이 recursion으로 가장 leaf에 도달했을 때, 값 저장하기 결과 느리지만 성공...! stack으로 dfs하면 좀 더 빠르려나... 하지만 넘 ㅜ귀찮은걸
문제 각각이 오름차순으로 정렬된 linked list들 lists 정렬된 하나의 linked list로 만들기 풀이 heap 라이브러리 이용해서 해보면 되지 않을까...? 같은 priority를 갖을 때, 비교가 안됨.. defaultdict(list) 이용해서 해볼까.. 예외처리 lists가 []인 경우 lists가 [[]]인 경우 결과 ...
문제 가격 리스트 prices prices[i]는 ith 날의 가격 하루에 사고, 그 이후에 판매하여 최대 수익을 얻고 싶다 profit 없으면 0 return 풀이 i번째까지 갔을 때, 0 ~ i-1 중 가장 저렴하게 구매한 금액을 알고 있으면 됨 브루트포스면 O(n**2) 탐색 결과를 저장하는 리스트를 만들어서, dp처럼 dp[k]= min(dp[k...
문제 k번을 어떤 글자를 다른 글자로 바꿀 수 있음 같은 글자로 이루어진 가장 긴 문자열의 길이 풀이 투 포인터 defaultdict에 구간 안의 각 알파벳 갯수 저장 현재길이 - 구간 속 가장긴 알파벳 <= k 여야함 결과 어려운 문제는 아닌데 왜이렇게 뇌가
문제 int 리스트 coins -> 동전 종류 amount -> total 금액 최소한의 동전으로 최종 금액을 만드는 방법 동전 수 return 만들 수 없다면 -1 return 동전의 갯수는 무한하다고 가정 풀이 전에 백준에서 dp로 이런 문제 몇 번 풀어봤다 amount+1 길이의 리스트를 (최댓값+1)로 초기화 동전으로 만들 수 있는 가장 작은 금...
문제 numCourses: 들어야하는 과목 수 prerequisites: 선행 과목 관계 (b를 먼저듣고, a 들어야함) 모든 코스 들을 수 있으면 true, 못들으면 false 풀이 위상정렬 문제 선행 과목의 수로 정렬하는 것 -> 위상정렬 선행과목이 0개인 것 부터 돌면 됨 선행 과목의 수를 저장하는 status A ->B, A ->C라고 했을 때,...
]
문제 linke list에 cycle이 있으면 true 리턴 풀이 어차피 Node.next가 한 노드 밖에 연결하지 못하니까 dfs로 탐색하며 visited인 노드를 다시 만나면 true, 아니면 false => 문제가 발생했다. val 이 같아도 다른 node가 있는 것.. => 같은 주소의 노드인지 판별해야한다 예외처리 input으로 None인 N...
문제 달팽이처럼 돌면서 숫자 출력하면 된다..! input은 2차원 List output은 1차원 List 풀이 m, n 을 미리 구하기 m은 행의 갯수 n은 열의 갯수 n, m > 1 까지 while 문으로 확인 한 줄, 한 칸 -> if 문으로 처리 결과 ![](https://images.velo
문제 정수 리스트 nums 정수 k 자주 나오는 순으로 k개 return 답이 unique 함이 보장됨 풀이 defaultdict 이용해서 list 돌면서 +=1 해주기 heap에 -freq를 우선순위로 넣어주기(클수록 우선순위 빠르도록) k번 pop 해서 리턴
문제 정수 리스트 nums 어떤 숫자라도 2번 나오는게 있다면 true distinct 라면 false 풀이 set해서 duplicate 제거 -> 길이 달라지면 true 아니 쉬워도 너무 쉬운데...;;;;; 결과 하나씩 비교하면서 넣는게 더 빠를까 했는데, 그렇진 않았다 이렇게 한 줄로 쓰면 좀 더 빠르긴 하
window,,, two pointer...
문제 정수 리스트 nums 가장 긴 증가하는 subseq 풀이 전에 백준에서 많이 풀어본 dp subseq의 시작점과 끝점이 다양할 수 있음을 유의 O(n**2) 결과
dfs
문제 non-overlap 되도록 최소한의 수의 interval 제거 몇개 제거하면 가능한가. 풀이 아 interval 문제 너무 어렵다.............. start 순으로 sort 비교하면서, 겹쳐지면 더 뒤에까지 영향 주는 구간을 제거 greedy 방식 결과
leetcode merge two sorted lists
LeetCode Invert Binary Tree
matrix rotate
matrix rotate
leetcode
leetcode - Valid Anagram
leetcode array
leetcode dp
leetcode graph
leetcode linked list
leetcode Matrix
leetcode binary tree
leetcode dp
leetcode str
leetcode dp인데 bfs로 풀어버린..
leetcode
leetcode linked list
leetcode tree
leetcode array
leetcode string
dp
leetcode binary tree
leetcode array
leetcode string
leetcode dp
leetcode tree
leetcode list
leetcode string
leetcode dp
leetcode tree