문제 설명 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. 제한사항 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. completion의 길이는 participant의 길이보다 1 작습니다. 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. 참가자 중에는 동명이인이 있을 수 있습니다. 입출력 예 입출력 예 설명 예제 #1 "leo"는 참여자 명단에는 있지만, 완주자 명단..
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. 제한사항 numbers의 길이는 1 이상 100,000 이하입니다. numbers의 원소는 0 이상 1,000 이하입니다. 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다. 입출력 예 내 풀이 function solution(n..
문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 array의 길이는 1 이상 100 이하입니다. a..
ref와 state의 차이 state를 변경하면 자동으로 컴포넌트가 렌더링 된다. 함수형 컴포넌트는 말 그대로 함수이다. 따라서 리렌더링이 된다는 것은 말 그대로 함수가 다시 불려지게 되고 컴포넌트 내부 변수들이 초기화 된다. 반면 Ref는 값이 변경되어도 렌더링이 발생하지 않는다. 또한 리렌더링시 값이 유지된다. 이에 따라 ref 값이 변해도 컴포넌트 내부의 변수들이 유지가 된다. 언제 사용하면 좋을까? 1. 값을 변경했을 때 렌더링이 되지 않았으면 할 때 2. state변화 등에 의해서 리렌더링시 값을 유지시키고 싶을 때 3. 특정 DOM 요소에 접근하고 싶을때 => ex) 렌더링시 input의 focus를 주고 싶을 때 state의 값을 업데이트 할 떄와 ref의 값을 업데이트 할 때의 렌더링 유무..
useReducer는 무엇인가? 1. useReducer는 컴포넌트의 state를 관리할 수 있는 리액트 훅이다. 2. useReducer는 useState의 대안이기도 하다. state값이 { title: " ", desc: " ", price: 0, category: " ", tags: [], quantity: 0, } 이런식으로 되어있고 이를 일반적인 useState hook의 setState로 변경한다고 생각해보자. 현재의 컴포넌트에서 저렇게 많은 값을 관리하자니 코드가 굉장히 복잡해질 것이다. 거기다 non-primitive한 객체나 배열에 대해서는 {...state, ~} 이런 식으로 불변성 관리까지 더불어서 값을 수정해주어야한다. 즉 더욱 복잡해질 것 이다. 이를 useReducer로 해결 ..