[알고리즘] LeetCode Balanced Binary Tree JS
2022. 12. 2. 21:23
알고리즘
개요 주어진 이진 트리가 균형 이진 트리인지 확인하는 문제이다 Balanced Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 균형이진트리가 뭐였는지 헷갈려서 정리를 간단히 해보았다. 우선 단순한 이진트리는 아래와 같다 하지만 트리 중에서 한쪽으로 치우쳐진 트리들이 있는데 편향 이진 트리라고도 하며 만약 탐색한다고 할때 트리의 장점을 살리지 못하고 모든 노드를 방문해야한다는 문제가 생긴다. 따라서 균형 이진 트리라고해서 모든 노드마다..
[알고리즘] LeetCode Lowest Common Ancestor of a Binary Search Tree JS
2022. 12. 1. 13:07
알고리즘
개요 이진트리와 두 개의 노드가 주어지는데 이때 두 노드 공통의 가장 가까운 조상 노드를 주어진 이진트리안에서 찾아 리턴하는 문제이다. 이때 주어진 이진트리는 BST의 속성을 가지는데 정렬되어 있다고 이해하면 된다. Lowest Common Ancestor of a Binary Search Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 사실 주어진 문제를 정확히 이해해서 풀지는 못했다. 단순히 DFS로 탐색하면서 지나온 노드들을 배열에 저장했다..
[알고리즘] LeetCode 189. Rotate Array JS
2022. 11. 26. 18:00
알고리즘
개요 nums 배열과 k 값이 주어진다. nums를 오른쪽으로 k번만큼 rotate 시켰을때의 nums 배열을 구하는 문제이다. Rotate Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 우선 k가 nums 배열보다 크다면 다시 원 상태로 돌아오는 경우를 계산해서 굳이 k만큼 돌릴 필요없어진다. 그 경우를 계산해서 단순하게 unshift와 pop으로 구현했는데 당연히 시간초과가 나오게 되었다 계속 고민하다가 잘 구현이 안되서 힌트를 좀 살펴봤..
[알고리즘] LeetCode 3. Longest Substring Without Repeating Characters JS
2022. 11. 24. 20:13
알고리즘
개요 문자열이 주어질 때, 문자열 내부에서 중복없이 이어지는 문자열 중, 가장 긴 문자열의 길이를 리턴하는 문제이다. Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 문자열 문제를 많이 안풀어봐서 조금 헷갈렸다. 그래도 기본적인 슬라이딩 윈도우를 사용한다는 것은 문자열 문제들 중 많이 출제되는 유형인거 같아 나름 쉽게 눈치 챌 수 있었다. 여기에 해쉬를 사용해 현재 문자열..
[알고리즘] LeetCode Top K Frequent Words JS
2022. 11. 24. 10:38
알고리즘
개요 문자열 배열이 주어지는데 이때 가장 많이 사용된 단어 순서대로 정렬하여 k만큼 리턴하는 문제였다. 만약 사용된 단어의 갯수가 같다면 lexicographical order순으로 정렬하여 리턴하라고 되어있었다. lexicographical order란 단순하게 알파벳순으로 정렬을 의미했고 js에서는 sort()를 사용하면 lexicographical order 순서대로 정렬된다는 것은 금방 알 수 있었다. Top K Frequent Words - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next inte..
[알고리즘] LeetCode Decode String JS
2022. 11. 23. 16:30
알고리즘
개요 암호화된 하나의 문자열이 주어지는데 이걸 해독해서 return하면 되는 문제이다. 복호화하는 방식은 다음과 같다. 2[ac] => acac , 3[cd]2[ff] => cdcdcdffff 숫자[문자] 규칙을 가지며 [ ] 안에 있는 문자는 숫자만큼 반복해서 꺼낸다. 이렇게 모든 문자를 원본 문자열로 돌리면 된다 Backspace String Compare - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 우선 스택으로 풀면 될거같다는 생각을 했다. 우..
컴파일러 작동방식을 통한 JS 호이스팅이 발생하는 이유
2022. 11. 22. 21:43
TIL/트러블슈팅
개요 사실 호이스팅의 개념은 정리한지 꽤 지났다. 하지만 이전에 한번 정리해본 내용을 토대로 남에게 설명해보니 질문을 받고 혼자 정리하면서 왜 이렇게 동작하는가 생각되는 것들이 많아서 조금 더 상세하게 적어서 작성해서 조금 더 좋은 자료로 발표하기 위해 딥하게 들어가보았다 개념을 크게 몰라도 상관없지만 그래도 조금 더 확장해서 다루기 위함이니 한 번쯤은 다시 보고 오면 이해가 쉬울거라 생각된다. 호이스팅이란? 개요 요즘 호이스팅에 관한 문제는 크게 없다. 왜냐하면 EsLint같은 곳들의 옵션 속에서 자동적으로 에러를 뿜어내서 변수를 항상 최상단에 선언할 수 있도록 만드는 하나의 장치가 마련되어있기 choiblog.tistory.com 그럼 어떤 부분이 많이 헷갈렸을까? 당연히 변수를 끌어 올리는건 아니다..
[알고리즘] LeetCode 438. Find All Anagrams in a String JS
2022. 11. 21. 22:44
알고리즘
개요 s, p 두 가지 문자열이 주어지는데 이때 p가 순서 상관없이 s의 부분집합이 되는 모든 인덱스를 찾는 문제였다 Find All Anagrams in a String - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 s 문자열을 계속 해쉬로 파싱하면서 p 문자열과 비교하여 풀었다. JS의 단점으로 map자료구조가 서로 같은지 비교하는게 안되어 직접 코드를 작성해줘야한다는 점이 조금 불편했다. /** * @param {string} s * @param ..
[알고리즘] LeetCode Unique Paths
2022. 11. 20. 17:08
알고리즘
개요 Unique Paths - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 격자판이 주어지는데 시작 지점 왼쪽 상단 모서리부터, 도착 지점 오른쪽 하단 모서리까지 도착할 수 있는 모든 경우의 수를 구하는 문제이다 도착 지점까지 오른쪽과 아래쪽으로 한 칸씩만 이동할 수 있다. 풀이 일반적인 dp 접근 방식으로 풀면 어렵지 않게 풀 수 있다. 특정 위치로 도착하는 경우의 수는 아래로 내려오는 경우와 오른쪽으로 이동하는 경우 해당 좌표로 도착할 수 있는데 그 전 ..
[알고리즘] LeetCode Number of IsLands
2022. 11. 18. 20:15
알고리즘
개요 섬의 갯수를 구하는 전형적인 DFS 문제이다 2차원 배열로 섬이 주어질 때 전체 섬이 몇개있는지 구하는 문제였다 Number of Islands - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 풀이 우선 배열 전체를 탐색하면서 문자 "1"을 찾아야했다. 만약 1을 발견했다면 해당 지점부터 DFS탐색을하며 1을 전부 0으로 바꿔준 후 섬의 갯수를 하나 증가시켜준다 이때 주의해야할 점은 대각선으로 1이 대각선으로 붙어있다면 서로 떨어져있는 것으로 본다는 것이..