프로그래머스: 더 맵게 (Heap)
더 맵게 음식의 스코빌 지수가 담긴 배열 scoville이 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하기 제한 조건 2 ≤ scoville.length ≤ $10^6$ 문제 풀이 조건 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수...
더 맵게 음식의 스코빌 지수가 담긴 배열 scoville이 주어질 때, 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 섞어야 하는 최소 횟수를 return 하기 제한 조건 2 ≤ scoville.length ≤ $10^6$ 문제 풀이 조건 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수...
게임 맵 최단거리 n * m 크기의 맵을 표현하는 이중 배열 maps가 주어질 때, 첫 번째 배열의 첫 번째 인덱스에서 출발하는 캐릭터가 목적지까지 도달하기 위한 최단거리를 구하기 제한 조건 1 ≤ n ≤ $10^2$ 1 ≤ m ≤ $10^2$ 문제 풀이 조건 n, m은 같은 값일 수 있으나, 둘 다 1인 ...
2개 이하로 다른 비트 numbers 배열의 요소인 양의 정수 x에 대하여, x보다 크고 x와 비트(bit)가 1~2개 다른 수들 중에서 제일 작은 수를 담은 배열을 반환하기 제한 조건 1 ≤ numbers.length ≤ $10^5$ 1 ≤ x ≤ $10^{15}$ 알고리즘 구상하기 시간복잡도를 줄이는데 집중한...
숫자 변환하기 자연수 x, y, n이 매개변수로 주어질 때, x를 y로 변환하기 위해 필요한 최소 연산 횟수를 return하도록 solution 함수를 완성하기 제한 조건 1 ≤ x ≤ y ≤ $10^6$ 문제 풀이 조건 1 ≤ n < y 알고리즘 구상하기 시간복잡도를 줄이는데 집중한다....
연속된 지도 API 요청으로 마커가 사라지지 않는 현상 해결하기 프로젝트 막바지에 접어들었을 때, 내가 맡은 목적지 페이지가 잘 작동하는지 최종 점검했다. 이 과정에서 마커가 바뀌는 동작을 빠른 시간 내에 연속 요청 했을 때, 마커가 사라지지 않고 누적되는 버그를 발견하였다. 이번 글에는 마커가 바뀌는 동작에 디바운싱을 적용하여 이 문제를 해결...
트러블 슈팅(Trouble Shooting) 앞선 트러블 슈팅에서는 useEffect가 무한루프 되는 문제를 다루었다. 이번에는 무한루프를 해결하기 전에 발견했던, 데이터가 페이지에 렌더링 되지 않는 문제를 트러블 슈팅 하려고 한다. 문제 인식 페이지에 데이터가 업로드 되지 않는 문제 리팩토링을 하면서 페이지에 접속했을 때 여행지 리...
카카오맵이 중복 렌더링되는 문제 해결하기 프로젝트 기간 동안 지도 API를 관리하면서 카카오맵이 중복 렌더링되는 문제를 겪었다. 이를 해결하기까지 꽤 여러 시도가 있었기 때문에, 이 과정을 기록해두고 향후 유사한 문제를 마주했을 때 시행착오를 줄이려고 한다. 문제 인식 지도 컴포넌트의 중복 렌더링으로 인한 잔상현상 발생 내가 담...
트러블 슈팅(Trouble Shooting) 리팩토링 과정에서 의도하지 않은 동작이나 오류를 마주했다. 이번 글은 이를 해결한 과정에서 배운 점을 정리한 것이다. 문제 인식 useEffect의 무한루프 목적지 리스트가 렌더링 되지 않는 원인을 파악하고자 console.log로 코드를 점검하던 중, useEffect의 무한 루프를 발...
커스텀 hook으로 자식 컴포넌트의 props 묶기 커스텀 hook으로 동일한 자식 컴포넌트에서 사용되는 props를 묶어서 코드의 유기성을 높였다. 왜 커스텀 hook을 사용했는가? fetch함수를 부모 컴포넌트에서 선언하면 받아온 data를 자식들에게 props로 내려주어야 한다. 그러나 그러나 나는 API fetch 함수를 컴포...
API 함수를 선언적으로 작성하기 사용자의 action에 의존하는 API는 그 action 함수 내부에서 fetch 되도록 리팩토링하였다. 왜 API fetch 함수의 위치를 변경했는가? 내가 담당한 목적지 리스트 페이지는 클릭과 같은 사용자의 행위(action)에 의존하여 업데이트되는 데이터가 많다. 실제로 내가 사용한 API 11개...