본문 바로가기

👨‍💻📱✍️🎢314

LeetCode 1603 - Design Parking System (Easy) 💡 문제 LeetCode - 1603번 🎯 풀이 과정 3종의 차량 (big, medium, small) 을 수용하는 주차장 시스템을 구현하는 문제입니다. carType 인덱싱을 편하기 하기 위해 배열의 크기를 하나 늘려서 사용합니다. 👨‍💻 코드 /** * @param {number} big * @param {number} medium * @param {number} small */ var ParkingSystem = function(big, medium, small) { this.parkingSlots = [0, big, medium, small] }; /** * @param {number} carType * @return {boolean} */ ParkingSystem.prototype.addCar .. 2023. 4. 24.
LeetCode 15 - 3Sum (Medium) 💡 문제 LeetCode - 15번 🎯 풀이 과정 주어진 배열에서 3개의 원소의 조합 중 합이 0인 것들을 중복없이 모두 찾는 문제입니다. 다만 입력 크기를 고려해서 일반 조합 알고리즘보다 효율적인 방법이 필요합니다. 투 포인터 알고리즘을 활용하면, 특정 합 S 를 만족하는 배열 쌍을 중복없이 찾는데 활용할 수 있습니다. 이때 배열은 정렬이 된 상태여야합니다. (중복 제거를 위해) 이 문제를 약간 변형해보면 세 원소 중 가장 첫번째 요소를 pivot 으로 정하고, 나머지 두 요소는 pivot 을 제외한 구간에서 sum - arr[pivot] 을 찾는 문제로 해석할 수 있습니다. 이때 중복 제거를 위해 pivot 이 바로 직전 pivot 값과 동일할 경우 무시하고, 마찬가지로 나머지 두 요소 중 첫번째 요.. 2023. 4. 24.
LeetCode 13 - Roman to Integer (Easy) 💡 문제 LeetCode - 13번 🎯 풀이 과정 로마 숫자를 변환하는 문제입니다. 로마 숫자는 감산, 가산 연산법을 함께 I, V, X, L, C, D, M 의 문자를 나열하여 표현합니다. 그렇기에 앞 자리부터 순회하면서 그 다음 숫자와 크기를 비교하여 합산해야할 크기를 알아냅니다. 이때 반복문 대신 재귀 호출을 사용하면 좀 더 간결하게 구현할 수 있습니다. 👨‍💻 코드 /** * @param {string} s * @return {number} */ var romanToInt = function(s) { const roman = { 'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 'D': 500, 'M': 1000, } function transform(here) { i.. 2023. 4. 24.
LeetCode 994 - Rotting Oranges (Medium) 💡 문제 LeetCode - 994번 🎯 풀이 과정 매 단위시간(minute) 마다 썩은 오렌지에 인접한 4방향에 위치한 오렌지가 함께 썩는다고 할때 주어진 grid 에서 모든 오렌지가 썩기까지 걸리는 시간을 구하는 문제입니다. 일반적인 BFS 탐색에서 약간의 변형이 필요한 유형입니다. 썩은 오렌지를 queue 에 넣어주고 queue 가 비어질때까지 반복해야지 각각의 단위 시간마다 현재 queue 에 담겨있는 오렌지들에 대해 BFS 를 할 수 있습니다. 보통 BFS 를 할 때 중복 방문을 피하기 위해 visit 같은 자료구조를 만들어 이용하는데, 여기서는 오렌지가 썩은 상태일 때를 이미 방문한 위치로 판단이 가능하므로 방문여부를 위한 별도의 자료구조는 만들어주지 않고 상태값으로 판단하도록 할 수 있습니다.. 2023. 4. 24.
리팩터링 2판 회고 💡 도서를 읽고 개인적인 생각을 정리하는 글입니다. 여러가지 리팩토링 기법을 JavaScript 예제로 설명하는 책입니다. 취준생보다는 실무에 있는 개발자분들에게 조금 더 와닿을 수 있는 내용들이라고 생각합니다. 레거시 프로젝트 유지보수 업무를 하다보면 고치고 싶은 계층 구조나 함수들이 눈에 띌 때가 있습니다. 작은 프로젝트라면 위험 부담이 적겠지만 규모가 큰 프로젝트라면 주요 메인테이너가 아닌 이상 전체 코드 베이스에 대한 이해도가 낮다면 이러한 수정 작업에 대한 위험 부담이 클 수 밖에 없죠. 그러다보면 선뜻 리팩토링 작업을 하기 어렵기 때문에 계속 후순위로 밀리게되며 악취나는 코드는 또 다른 악취나는 코드와 함께 계속 묵혀지게 되는.. 그런 악순환을 겪게 될 수도 있습니다. 건강한 코드 베이스를 위.. 2023. 4. 24.
React Framer Motion 톺아보기 📌 Framer Motion? Framer Motion 은 React 로 개발된 Animation Library 입니다. 관련된 패키지중에 지속적으로 사용량 및 관심도가 증가하고 있는 추세입니다. 📈 웹앱에서 애니메이션을 다루는 다양한 방법이 있지만, 다양한 환경에서 충분한 성능을 고려하여 구현하기에는 생각보다 고려할 사항이 많고 까다로운 것이 사실입니다. 이번 위클리에서는 이러한 부분에 도움이 될수도 있는 패키지를 소개해보는 시간을 가져보려합니다. 📌 TL;DR Framer Motion 의 특징 TypeScript 지원 최적화된 성능 및 풍부한 API physics 기반의 사실적인 transition효과 제공 (spring, tween, inertia) 모던 웹앱에서 반복적으로 필요로 하는 여러 모션들.. 2023. 3. 27.