전체 글
-
땅따먹기알고리즘 2021. 9. 14. 23:27
내 풀이법 문제해석 한 행마다 4개의 열이 주어지며 그 중 숫자 하나를 골라야 한다 단 각 행마다 선택하는 열은 일치해서는 안된다. 예를들어 첫번째 행에 첫번째 열을 골랐다면, 두번째 행에 첫번째 열을 골라서는 안된다. 선택한 숫자를 모두 더할 때의 최대값을 리턴하시오 내가 생각한 풀이법 [1, 2, 3, 4], [1, 2, 3, 8]이 있다면 첫번째 행과 두번째 행의 가장 큰 값의 열이 일치하여 둘 중 하나를 선택해야한다. 이럴 경우 두번째로 큰 값과 제일 큰 값과의 차를 통해 구분할 수 있다. 한계점 위 방법알 적용하기 위해서는 모든 행들을 스캔하여 근접하는 행들 중 가장 큰 값들의 열이 중복되는 경우를 따로 저장해야한다. 만약에 3개의 행의 가장 큰 값의 열이 모두 일치해야한다면 계산 방법이 너무 ..
-
다리를 지나는 트럭알고리즘 2021. 9. 13. 19:55
내 풀이법 문제해석 트럭들이 다리를 지나가는데 걸리는 시간을 구하라 트럭들은 1초마다 다리의 길이의 1씩 지나간다 다리에는 무게제한이 있다 (weight) 내가 생각한 풀이법 특별한 이벤트 발생할 때와 지속적으로 발생하는 이벤트를 나눠서 코드를 작성함 특별한 이벤트의 경우 새로운 트럭이 다리에 진입할 때 다리위의 트럭이 다리의 끝에 도달할 때 지속적 이벤트의 경우 한 턴마다 시간이 1씩 증가함 트럭이 1초마다 다리를 1씩 지나감 나의 코드 const solution = (bridgeLength, weight, truckWeigths) => { let time = 0; let passingWeight = 0; let passingTrucksWeigth = []; let passingTrucks = []; ..
-
ref & useRef() & forwardRef()리액트 2021. 9. 11. 20:16
공부하기 위해 리액트 공식 문서 및 리액트 블로그를 정리한 내용입니다. Ref 일반적으로 리액트에서 DOM의 어느 자식을 수정하기 위해서는 새로운 props를 전달하여 자식을 다시 렌더링해야합니다. 그러나 이런 일반적인 방법을 벗어나 직접적으로 자식을 수정해야 하는 경우도 있습니다. 그 중 하나의 방법으로 Ref를 사용하실 수가 있습니다. Ref를 사용해야할 때 리액트는 다음과 같은 사례에 Ref를 사용할 것을 권장합니다 focus, text selection, 미디어 재생 을 관리해야할 경우 애니메이션을 직접 실행해야하는 경우 서드 파티 DOM 라이브러리를 리액트와 같이 사용할 경우 Ref 생성하기 class 컴포넌트 class MyComponent extends React.Component { con..
-
스킬트리알고리즘 2021. 9. 11. 14:26
내 풀이법 문제해석 skill 인자는 스킬을 찍는 순서를 나타냄 skill_trees 인자의 각 배열값들이 스킬 찍는 순서에 맞게 찍었는지 확인 skill_trees 배열 중 몇개가 순서에 맞게 찍었는지 확인 내가 생각한 풀이법 스킬트리 각 배열의 값에 skill 값 이외를 우선 지운다 스킬트리 각 배열 값들의 인덱스 값과 스킬의 인덱스 값들을 비교하며 조건에 부합한지 확인한다 스킬은 중복되지 않고 고유하기 때문에 가능 나의 코드 const solution = (skill, skill_trees) => { let answer = 0; let trans = []; for (let i = 0; i < skill_trees.length; i++) { // 1. 스킬트리 각 배열값을 string에서 array로..
-
영어 끝말잇기알고리즘 2021. 9. 9. 21:57
내 풀이법 문제해석 n 명이서 끝말잇기를 한다 낱말을 못 잇거나 기존에 사용한 낱말을 쓰면 탈락자가 발생한다 [누가(n명 중에 몇번째 사람이), 몇번째 라운드]에서 탈락을 했는지 리턴 만약에 탈락자가 없을 시 [0, 0] 리턴 내가 생각한 풀이법 반복문을 돌며 탈락자 발생 (1. 마지막 글자를 못 잇거나 혹은 2. 단어 중복 사용) 시 반복문 중단 반복문에 사용한 i 값을 통해 [누가, 언제] 탈락했는지 값을 구함 나의코드 const solution = (n, words) => { let usedWords = []; let i; for (i = 1; i < words.length; i++) { let previousWord = words[i - 1]; let presentWord = words[i]; u..
-
구명보트알고리즘 2021. 9. 8. 22:00
내 풀이법 문제해석 구명보트에는 2명이하 탈 수 있으며, 2명의 몸무게가 limit을 넘어서는 안된다 2명이 탈 수 없다면 1명을 태워야한다 최소한의 구명보트 사용 개수를 구하라 내가 생각한 풀이법 몸무게가 가장 무거운 사람별로 나열한다 선택한 사람과 더하면 limit 이하지만 최대에 가까운 사람과 같이 탈 수 있도록 한다 구명보트에 탄 인원은 배열에서 지운다 나의 코드 function solution(people, limit) { let answer = 0; people.sort((a, b) => b - a); while (people.length > 0) { let partnerCandidate = []; for (let j = 1; j < people.length; j++) { if (people[..
-
Portals리액트 2021. 9. 8. 17:00
Portals Portals란? ReactDOM.createPortal(child, container) createPortal 메서드를 사용하면 자신의 부모 컴포넌트 DOM 계층구조 밖을 넘어선 어느 DOM 노드에 자식으로 렌더링 할 수 있습니다. 이름 그대로 포탈처럼 child 매개변수에 작성한 엘리먼트를 원하는 DOM 노드의 자식으로 넣을 수 있습니다. 첫번째 인자(child)에는 엘리먼트, 문자열, fragment 등 리액트 자식을 작성할 수 있습니다. 두번째 인자(container)에는 자식으로 렌더링하고자 하는 DOM 엘리먼트를 작성하시면 됩니다. 이벤트 버블링과 Portals 사용예시 portal은 일반적인 React 자식과 같이 동작을 합니다. portal은 DOM 트리에서는 위치가 바뀌어도..
-
Context리액트 2021. 9. 5. 20:54
Context context를 사용하면 컴포넌트 트리 전체에 데이터를 공유하여, 부모부터 자식에게 데이터를 props를 통해 전달해주지 않아도 됩니다. 언제 context를 사용해야하나요? 리액트를 사용하다면 현재 로그인한 유저, 테마(dark 혹은 light), 선호하는 언어 등 전역적으로 데이터를 공유해야 할 경우 context를 사용하면 됩니다. context를 사용하지 않은 예시입니다. class App extends React.Component { render() { return ; } } function Toolbar(props) { // Toolbar 컴포넌트는 불필요한 테마 prop를 받아서 // ThemeButton에 전달해야 합니다. // 앱 안의 모든 버튼이 테마를 알아야 한다면 //..