본문 바로가기

코딩테스트

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.. 더보기
코딩 테스트 연습을 다시 시작하다. (LeetCode) 첫 직장에 취직하고 나서 다시는 코딩테스트를 볼 일이 없을 줄 알았다. 항상 좋을 것만 같았던 첫 회사가 부침을 겪으니 눈치 빠른 사람들은 이미 면접을 보고 있었고, 나는 그래도 대비는 해놓자는 마음에 코딩테스트 연습을 했었다. 친구의 추천으로 두 번째 회사로 이직한 후, 자금적으로 안정적인 직장에서 더 이상 이직은 필요 없을 줄 알았다. 그런데 웬일, 이번엔 세계적인 경기 침체로 안 무너질 것 같던 회사가 휘청이고 있다. 어쩌겠는가 다시 면접 준비를 하고 있다. 지금은 코딩테스트를 준비하기 참 좋은 환경이 갖춰져 있다. 다양한 코딩 테스트 문제를 풀어보고 채점을 해주는 사이트들이 많이 생겼고, 코딩 테스트를 문제 유형별로 풀어볼 수도 있고, 회사별 기출문제를 풀어볼 수도 있다. 커뮤니티를 통해 코드를 .. 더보기