본문 바로가기

전체 글

Leetcode 75 day8 (N-th Tribonacci Number, Min Cost Climbing Stairs, Single Number) 1차원 DP 문제 둘, 비트연산 문제 하나 1137. N-th Tribonacci Number 피보나치 넘버가 아닌 n 번째 트리보나치 넘버 문제. The Tribonacci sequence Tn is defined as follows: T0 = 0, T1 = 1, T2 = 1, and Tn+3 = Tn + Tn+1 + Tn+2 for n >= 0. Given n, return the value of Tn. 피보나치는 동적 프로그래밍 단골 예제라 설명할 것도 없다. class Solution { private int[] trib = {0, 1, 1}; public int tribonacci(int n) { if (n < 3) { return trib[n]; } int[] ret = new int[n+1].. 더보기
Leetcode 75 day7 (Search in a Binary Search Tree, Kth Largest Element in an Array, Nearest Exit from Entrance in Maze) Leetcode 75를 시작한 지 벌써 일주일째. 벌써 21 문제를 풀었다. 18일만 더 풀면 된다. 한 가지 문제 패턴을 하루에 모두 풀지 않는 이유는 장기 기억 관점에서 Spaced Repetition이 유리하기 때문이다. 그래서 다양한 유형의 문제를 번갈아가면서 풀면서 모든 패턴을 푸는 방법을 장기적으로 기억하는 게 목표다. 700. Search in a Binary Search Tree 이진 검색 트리에서 검색하는 문제. You are given the root of a binary search tree (BST) and an integer val. Find the node in the BST that the node's value equals val and return the subtree ro.. 더보기
Leetcode 75 day6 (Counting Bits, Reverse Vowels of a String, Guess Number Higher or Lower) 6번째 날에는 비트연산, 문자열, 이진 검색 패턴의 문제를 풀어봤다. 338. Counting Bits 정수 n이 주어졌을 때 0부터 n까지 n+1개 숫자의 이진 표현에서 1의 개수를 저장한 배열을 리턴한다. Given an integer n, return an array ans of length n + 1 such that for each i (0 더보기
Leetcode 75 day5 (Number of Recent Calls, Maximum Depth of Binary Tree, Binary Tree Right Side View) Leetcode 75에는 꽤 다양한 패턴의 문제들이 골고루 수록되어 있다. 그래서 아직 패턴 별로 Easy 문제들이 꽤 남아있다. 오늘은 Queue, DFS, BFS 문제들을 풀어봤다. 933. Number of Recent Calls 문제를 해석하는데 시간이 좀 걸렸는데, 클래스 구현 문제다. RecentCounter는 ping 함수가 호출될 때마다 최근 3000밀리 초 내에 발생한 요청 수를 리턴해줘야 한다. You have a RecentCounter class which counts the number of recent requests within a certain time frame. Implement the RecentCounter class: RecentCounter() Initializes.. 더보기
Leetcode 75 day4 (Find the Difference of Two Arrays, Removing Stars From a String, Delete the Middle Node of a Linked List) Cracking the coding interview라는 아주 유명한 코딩 면접 준비용 책이 있는데 아직 완독한 적이 없다. 요즘 리트코드같은 플랫폼이 워낙 잘 구현되어 있으니 코드 짤 때 메서드 자동 완성을 해주기도 하고 테스트 케이스를 짜면 돌려주고 채점까지 해주니 굳이 손으로 코딩하는 연습과는 멀어지게 되는 것 같다. 오늘도 연습해 보는데 코테는 감을 유지하는 게 중요한 것 같다. 2215. Find the Difference of Two Arrays answer[0]은 nums1 - nums2 차집합 리스트, answer[1]은 nums2 - nums1 차집합 리스트를 반환해야 한다. 리스트 내 숫자의 순서는 상관없다. 또한 리스트는 distinct 한 숫자 리스트기 때문에 중복이 없어야 한다. .. 더보기
Leetcode 75 day3 (Kids With the Greatest Number of Candies, Can Place Flowers, Find Pivot Index) 문제풀이 3일 차. 아직은 할만하지만 작심삼일의 그 삼일째다. 평소에 코틀린으로 대부분 개발하지만 코딩테스트는 자바를 사용한다. 자바로 된 코드는 대부분의 개발자가 읽을 수 있고, 함수 네이밍 컨벤션도 익숙해서 자동 완성이 없어도 잘 쓰는 편이다. 코틀린은 함수형이고 stdlib를 사용하면 메서드 하나로 풀 수 있는 문제들도 가끔씩 있다. 그 간결함이 오히려 개발자의 코드 구현 능력을 가릴 수 있는 것 같다. 오늘은 Array/String 2문제, Prefix Sum 1문제를 풀어봤다. 1431. Kids With the Greatest Number of Candies n명의 아이들이 가진 캔디 수를 저장한 배열이 있고, extraCandies를 줬을 때 아이들 중에서 캔디를 가장 많이 가질 수 있다면 .. 더보기
Leetcode 75 day2 (Greatest Common Divisor of Strings, Is Subsequence, Find the Highest Altitude) 두 번째 날도 아직 Easy 난이도만 풀고 있다. 다행히 아주 다 잊어버리진 않은 것 같아서 다행이다. 그런데 CS 기본이나 면접 질문들은 언제 준비하고 이력서는 언제 업데이트할지.. 할 일이 태산이지만 문제부터 풀어보자. 1071. Greatest Common Divisor of Strings 두 문자열 s, t가 있을 때 s가 t로만 구성돼있는 경우 나눌 수 있다. 이때 str1, str2를 나누는 가장 긴 문자열을 구하라는 문제다. For two strings s and t, we say "t divides s" if and only if s = t + ... + t (i.e., t is concatenated with itself one or more times). Given two strings.. 더보기
Leetcode 75 day1 (Merge Strings Alternately, Move Zeroes, Maximum Average Subarray I) 첫날이니 문제 패턴들 별로 리마인드 하는 느낌으로 풀어봤다. 풀어본 문제인데 풀 때마다 새로운 느낌은 왜인지 🤣 그렇지만 한번 더 풀어보니 내가 어떤 패턴에 약한지 조금 알게 되었다. Two pointers 패턴의 문제인지 파악하거나 코드를 짜는데 익숙하지 않은 것 같아서 연습을 더 해보려고 한다. Array/String > 1768. Merge Strings Alternately 먼저 문제를 읽어보자. 주어진 두 문자열 word1, word2를 합치는데 문자가 번갈아가면서 나오도록 해야한다. 그리고 시작은 word1부터 한다. 그리고 둘 중 하나의 문자열이 더 길다면 머지된 문자열 뒤에 나머지를 붙인다. You are given two strings word1 and word2. Merge the st.. 더보기