🚩 문제 풀러 가기 📄 접근 방법 그리디 더보기 문제 해석 우리가 파는 레모네이트 가격은 $5입니다. 고객들은 무조건 레모네이드 한 개만 주문합니다. 고객들이 지불하는 돈은 $5, $10, $20입니다. 다만, 우리가 돈을 거슬러줘야할 때는 고객들이 지불했던 돈으로만 가능합니다. 모두에게 거슬러 줄 수 있다면 true를 반환하고, 한 명이라도 거슬러주지 못한다면 false를 반환합니다. 1. 거슬러줄 돈을 저장할 collect 빈 객체를 선언합니다. 2. 받은 돈이 $5일 때, $5가 없다면 1을 할당하고, 있다면 +1을 합니다. $10일 때, $5가 있다면 -1 합니다. 그리고 $10가 없다면 1을 할당하고, 있다면 +1을 합니다. $5가 없으면 거슬러줄 수 없으므로 false를 반환합니다. $20일 ..
🚩 문제 주소 구명보트 📄 접근 방법 투 포인터 더보기 핵심: 가장 무거운 사람과 가장 가벼운 사람을 묶어서 판단하는게 제일 최소 결과가 나옵니다. 1. 주어진 사람들 배열을 오름차순으로 정렬합니다. 2. left 포인터는 0, right 포인터는 배열의 길이 - 1 으로 할당합니다. 3. left포인터가 right포인터가 같지 않을 때만 아래의 과정을 반복합니다. 정렬배열[left](가장 가벼운 사람) + 정렬배열[right](가장 무거운 사람)이 주어진 limit보다 작다면, 보트에 두명 다 탈 수 있다는 것이므로 left포인터는 1 늘려주고 right포인터는 1 낮춰줍니다. limit보다 크다면 한명만 탈 수 있으므로 무거운 사람을 보내야 합니다. 따라서 right포인터만 1 낮춰줍니다. 판별이 끝..
🚩 문제 주소 455 - Assign Cookies 📄 접근 방법 그리디 더보기 문제가 무슨 뜻인지 해석하느라 한참 걸렸습니다. 문제가 무엇을 하라는 지 깨닫고는 쉽게 풀었습니다. 아이들 배열은 각각 최소한 쿠키를 이만큼 먹겠다는 숫자가 담겨 있습니다. 그래서 아이들 배열을 순회합니다. 아이가 쿠키를 먹을 수 있다면, 먹은 쿠키는 빼줘야 하므로 idx를 업데이트해서 idx 이후부터 쿠키 배열을 순회하게 합니다. 그리고 answer를 1 늘려줍니다. 반복이 종료되었다면 answer를 반환하면 끝입니다. 👨💻 나의 코드 var findContentChildren = function(g, s) { let answer = 0; const children = g.sort((a,b)=>a-b); const coo..
🥯 애피타이저 안녕하세요. useReducer에 대해 공부하는 김에 TodoList를 만들어보게 되었읍니다. 매우 간단하고 디자인이라곤 1도 찾아볼 수 없으니 감안하고 봐주세요. 혹여나 코드에 대해 피드백이 있으시다면 댓글로 알려주세요. 그렇다면 제가 무한 감사를 드릴 것입니다. 🍖 메인 TodoList의 얼굴 해야 할 일을 써넣을 input 태그와 등록 버튼을 담은 form, TodoItem 컴포넌트, TodoItem들을 담을 TodoList 컴포넌트, 이렇게 3개의 컴포넌트로 구성된 간단한 앱입니다. reducer // reducer 함수 const reducer = (state, action) => { switch (action.type) { case "INIT": return [...action...
🥯 애피타이저 안녕하세요. 이번 글은 useReducer를 간단하게 알아보겠읍니다. 피드백할 부분이 있다면 댓글로 알려주세요. 그럼 무한 감사를 드립니다. 🍖 메인 간단 소개 useReducer는 React의 훅(Hook) 중 하나로, 컴포넌트의 상태를 관리하기 위해 사용됩니다. useReducer는 Redux와 비슷한 개념으로 동작하지만, Redux보다 더 간단하고 가볍게 사용할 수 있습니다. 문법 useReducer는 세 개의 인자를 받을 수 있습니다. const [state, dispatch] = useReducer(reducer, initialArg, init); 첫 번째 인자로 reducer 함수이고, 두 번째 인자로 initialArg(초기 상태), 세 번째 인자는 초기 상태를 반환해야 하는 ..
📌 React란? React는 페이스북에서 개발한 JS 오픈소스 라이브러리입니다. React는 Virtual DOM이라는 개념을 사용하여 상태의 변함에 따라 선택적으로 UI를 렌더링 합니다. Virtual DOM은 가상으로 존재하는 DOM입니다. React는 이벤트가 발생할 때마다 Virtual DOM를 만들어서 렌더링마다 실제 DOM과 비교해서 변경이 필요한 최소한의 변경사항만 찾아서 실제 DOM에 반영해 줍니다. 이로 인해, 앱이 효율적으로 동작해서 속도 개선에 많은 도움이 된다고 합니다. 더보기 Vanilla Javascript로 가상돔(VirtualDOM) 만들기 이 링크에서는 Virtual DOM에 대한 개념뿐만 아니라 직접 JS로 구현하는 것까지 볼 수 있습니다..! 리액트의 3가지 특징 선언..
🚩 문제 주소 https://programmers.co.kr/learn/courses/30/lessons/67256 (2022년 1월 1일에 푼 문제입니다.) 📄 접근 방법 구현 더보기 findDistance 함수를 만들어 줍니다. 1-1. 딕셔너리를 활용해서 현재 번호와 누른 번호를 받아서 거리 계산을 합니다. #에서 시작합니다. 1,4,7은 L, 3,6,9는 R을 answer에 저장합니다. 2,5,8,0은 findDistance함수를 활용해서 l의 거리가 r의 거리보다 길면 answer에 R을 저장하고, r의 거리가 l의 거리보다 길면 answer에 L을 저장합니다. 두 개가 같은 경우, hand가 left일 경우 L, right인 경우 R을 저장합니다. answer를 리턴합니다. 👨💻 나의 코드 ..
🚩 문제 주소 DI String Match (2021년 12월 31일에 푼 문제입니다.) 📄 접근 방법 딕셔너리 더보기 딕셔너리를 먼저 만들어 줍니다. 숫자를 발견하면 answer에 저장합니다. 아니라면 temp에 하나씩 저장합니다. 3-1. 저장하다가 딕셔너리의 key와 같아지면 value를 answer에 저장하고 temp를 초기화합니다. answer를 int로 변환한 뒤 출력합니다. 👨💻 나의 코드 def solution(s): temp = '' answer = '' dic = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9} for i in s: if..