전체 글

다양한 생각들을 기록합니다.
개발/코딩테스트

[프로그래머스] 택배상자

문제의 설명을 그대로 코드로 옮겨보려고 해봤습니다. function solution(order) { let result = 0; let containerIndex = 0; let subContainerIndex = -1; let orderIndex = 0; const length = order.length; const container = Array.from({ length }, (_, i) => i + 1); const subContainer = []; while (true) { if (result === length) break; if (subContainer[subContainerIndex] === order[orderIndex]) { result += 1; subContainer.pop(); su..

TIL/일일 회고

[일일 회고] 2023-10-09

모던 리액트 Deep Dive를 사전 예약을 해서 오늘 받았다. 잠깐 읽어봤는데 책의 구성이 탄탄하게 느껴져서 재밌게 읽을 수 있을 것 같다. 우아한 타입스크립트 with 리액트는 이제 30p 정도만 더 읽으면 1회독을 하게 되는데 배달의민족 개발 사례를 보는게 재밌는 것 같다.

개발/코딩테스트

[프로그래머스] 이진 변환 반복하기

문자열에서 0을 제거해주는 함수, 이진수로 표현해주는 함수 2개를 각각 만들어서 해결했습니다. function deleteZero(str) { let newStr = ''; let count = 0; for (let i = 0; i 1) { rest = rest + String(length % 2); length = Math.trunc(len..

개발/코딩테스트

[프로그래머스] 뒤에 있는 큰 수 찾기

처음에 이중 for문으로 풀이를 생각하였으나 효율성에서 통과하지 못하는 문제가 발생했습니다. 그 후에 stack 자료구조를 이용해서 해결하는 방법을 선택했습니다. function solution(numbers) { const result = Array.from({length: numbers.length}, () => -1); const stack = []; for (let i = 0; i 0 && numbers[stack.at(-1)] < numbers[i]){ result[stack.pop()] = numbers[i]; } stack.push(i); } return result; }

TIL/개발

요즘 개발자 베타리딩 - 2주차

2주차에서 나눈 얘기를 간단하게 정리해보았습니다. 내게 맞는 무대를 찾기 위한 이직 계획 세워보기 1. 이직을 계획한다면 어떤 회사를 가고 싶은지 - 원팀인 회사, 비즈니스 임팩트에 집중하는 회사, 인재 밀도가 높은 회사 2. 내가 원하는 환경은 어떤 포인트가 있는것 같은지 - 훌륭한 동료들이 있는 곳, 도전 과제들이 많은 곳, 노력에 대한 보상이 따르는 곳 지금의 회사, 다음 회사에서 이루고 싶은 나의 욕구 리스트 적어보기 - 회사 내의 동료들과 함께 스터디를 하고 제품에 바로 적용하는 싸이클 만들기 - 기획을 검증하기 위한 PoC를 빠르게 진행하여 회사의 비즈니스를 돕고 이모지 많이 받기 - 어려움이 있는 동료에게 먼저 다가가서 얘기를 나누고 내가 도울 수 있는 부분을 생각하고 실천하기 - 주변..

TIL/일일 회고

[일일 회고] 2023-11-08

저번주부터 라는 책의 베타리딩에 참여하고 있다. 책을 읽는것 이상으로 디스코드를 통해 따로 모임을 하면서 개발자의 커리어에 대한 다양한 생각을 나누고 있는데 비슷한 연차를 가진 동료 개발자분들과 이야기를 나누고 선배 개발자분들의 경험을 들으면서 매주 뜻깊은 시간이 되고 있는 것 같아서 좋다. 최근에 글을 지속적으로 쓰기 시작하니 뭔가 기분이 좋아졌다. 뭔지 모르겠지만 그냥 좋다.

TIL/개발

프론트엔드에서의 비즈니스 로직은 어떻게 분리할 수 있을까요?

프론트엔드 개발을 하면서 우리는 다양한 비즈니스 로직을 다루고 있어요. 자바스크립트가 존재하지 않던 예전의 웹은 정말 UI만 다루고 있었다고 얘기할 수 있겠지만, 자바스크립트가 탄생하고 AJAX 프로그래밍을 통해 웹에서 서버와 통신을 하게 되면서 웹의 역할이 늘어나게 되었어요. 이제는 프론트엔드와 백엔드의 영역이 분리되었고 프론트엔드에서의 책임이 많이 증가하게 되었는데요. 그 책임중의 하나가 비즈니스 로직이라고 얘기할 수 있을 것 같아요. 우선 비즈니스 로직의 정의는 어떻게 내리면 좋을까요? 비즈니스 로직이란 현실 세상의 문제를 해결하는, 소프트웨어 기능의 핵심적인 처리를 담당하는 코드라고 얘기할 수 있을 것 같아요. 예를 들면 쇼핑몰에서의 주문하기, 블로그에서의 게시글 작성하기와 같은 기능들은 모두 비..

TIL/개발

React에서 useCallback은 언제 사용해야 할까?

React에서 함수 컴포넌트가 도입된 이후 v16.8부터 다양한 hook들이 소개되고 있습니다. 그 중에서 상태를 관리하는 useState, useReducer와 같은 상태를 다루기 위해서 꼭 사용해야 하는 훅도 있지만 useCallback, useMemo, memo와 같이 겉보기 동작에는 전혀 영향을 주지 않는 훅들도 있습니다. 메모이제이션은 무엇일까? 사용하는 것과 사용하지 않는 것에 동작의 차이가 없다면 이 훅은 어떤 목적에서 사용되는 걸까요? 이미 알고 계시겠지만 React에서는 메모이제이션(Memoization)을 위해 사용하고 있습니다. 메모이제이션의 대한 위키를 찾아보면 '컴퓨터 프로그램이 동일한 계산을 반복해야 할 때, 이전에 계산한 값을 메모리에 저장함으로써 동일한 계산의 반복 수행을 제..

유승완
유승완