반응형

전체 글 307

백준 2437: 저울 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/2437 정답 풀이 이건 문제 푸는 아이디어를 생각하기 정말 어려웠을 것 같다. 나도 여러 블로그를 통해 이해가 됐고, 만약 이런 방식으로 설명이 되어 있었다면 ,이해가 좀 더 수월할 수 있었을 것 같은 방식으로 이야기 해보려고 한다.  [1,1,2,3,6,7,30] 배열이 주어졌다고 가정하자. 이해하기 쉽게 중간부터 흐름을 따라가보자.  1,1,2,3 으로 표현할 수 있는 최솟값은 1이다. 최댓값은 7이다.  (1 + 1 + 2 + 3)   그 다음 숫자 6을 넣으려고 할 때, 6이 내포하는 의미가 무엇이겠는가? 적어도 6을 표현할 수 있고, 이전 숫자들로 표현할 수 있었던 값 7과 더한다면 최대로 13을 표현할 수 있다는 뜻이 된다...

[Error] Rendered more hooks than during the previous render.

에러 발생React Hook "useForm" is called conditionally.React Hooks must be called in the exact same order in every component render. Did you accidentally call a React Hook after an early return?  문제 코드 아래 해당 코드를 MyPage()의 맨 밑에 위치시켰을 때 에러가 발생했다. 문제 이유 React Hook 인 `useForm`을 return 문 뒤에 선언되도록 해서 문제가 생긴 것이다.  컴포넌트가 호출될 때, 1. 해당 컴포넌트에서 사용되는 상태들을 확인하고 2. return을 만나면 페이지를 렌더링한다.  하지만 return 문 이후에 useForm ..

백준 11000 : 강의실 배정 - javascript()

문제 출처 https://www.acmicpc.net/problem/11000 문제 풀이 생각의 전환이 필요한 문제였다.  - 일단 시간들을 오름차순으로 정렬하자 - 정렬한 시간들을 탐색한다.   - 그때 start의 시간이라면 방이 하나 필요하다 "+1" 는 뜻   - 그때 end의 시간이라면 방을 하나 반납한다 "-1" 는 뜻  - 매순간 방을 최대로 쓴 값이 답이 된다.     - 왜냐하면 이미 우리는 강의실을 최적으로 정렬을 해놨기 때문에       그때 필수적으로 써야 했던 방의 개수가 최소의 강의실을 사용하는 것이 된다. 정답 코드 let fs = require('fs');let [N, ...input] = fs.readFileSync('/dev/stdin').toString().trim()...

프로그래머스: 순위 검색 - 실수 축제 (map 객체에 값 추가하기, replace)

문제 코드 for(let candi of candi_key){ if(!map.has(candi)) map.set(candi, []) let arr = map.get(candi).push(score) //틀린 부분 map.set(candi, arr) } 틀린 이유 map.get(candi).push(score)가 배열의 'push' 메서드인데, 이 메서드는 호출한 배열의 길이를 반환한다. 즉, arr에는 배열이 아니라 score가 추가된 후 배열의 길이가 할당된다. 따라서, map.set(candi, arr) 를 할 필요가 없다. 그냥 push 메서드로 배열에 값을 추가하면 된다. 왜냐하면 배열은 이미 참조로 연결되어 있으므로 map에..

백준 12015 : 가장 긴 (LIS 알고리즘, 이진탐색) - javascript

문제 출처 https://www.acmicpc.net/problem/12015 정답 풀이  참 좋은 문제이고, 기가막힌 방법이다. 문제에서 가장 긴 수열 알고리즘의 길이를 구하라고 했으니,  - LIS 알고리즘을 활용하기 - LIS 알고리즘을 돕는 헬퍼 이진탐색 활용하기  LIS 알고리즘의 푸는 아이디어만 간단하게 공유하면 될 것 같다.  ### LIS 알고리즘 수열 = {10,20,10,30,20,50} 인 경우로 보자.  - 먼저 배열에 10을 넣는다.   - 새로 넣어야 하는 수는 20이다 - 배열의 마지막 값인 10과 비교했을 때 20이 더크니 배열에 추가한다.   - 새로 넣어야 하는 수는 10이다- 배열의 마지막 값인 20과 비교했을 때 10이 더 작다. - 배열에서 10보다 크지만 가장 작은..

프로그래머스: 길 찾기 게임 - javascript(트리)

문제 출처 https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 정답 풀이 트리를 생성하고, 트리를 탐색하면 되는 문제다.  ### 0. 기존 세팅  문제에서 주어지는 `nodeinfo`를 새로운 배열로 정리 및 정렬을 해야 한다. 기준은, -  노드의 번호는 idx+1 이 된다. -  노드의 x값은 node[0]이 된다. -  노드의 y값은 node[1]이 된다.  정렬은, - y값을 기준으로 내림차순을 한다. (이유: 부모 자식 부터 차례대로 tre..

The above error occurred in the <input> component

에러 메시지 The above error occurred in the  component:React will try to recreate this component tree from scratch using the error boundary you provided, ErrorBoundary. 에러 발생 코드 에러 이유 - input 태그는 닫는 태그 없이 사용해댜 한다. - 즉, input 태그는 self-closing 태그이다.  코드 수정 - input의 value 속성으로 값을 넣는다. => input 필드가 data.nickname 값으로 초기화되고, => 값이 update 될 때마다 input 필드의 값도 자동으로 업데이트 된다.

백준 1744: 수 묶기 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/1744 문제 풀이머리 뽀갈 날뻔 했다.그래도 1시간 30분 걸려서 풀어냈다..    역시 test case를 추가하면서 어떤 부분을 놓쳤는지 알아내는 것이 참 중요하다 처음에 작성한 코드는 웬만하면 틀린 부분이 있기 때문에,  console.log() 를 잘 이용해서 자신의 실수를 잘 발견하는 것이 코테의 핵심이라는 생각이 든다.  거두절미하고, 이 문제의 핵심은 뭐다?"어떻게 묶어야 최대의 값이 될까?" 내가 세운 기준은 이렇다.  - 1. 절대값이 큰 숫자대로 곱한다. - 2. 양수끼리 계산하고, 음수끼리 계산한다. - 3.양수끼리 계산할 때 1은 묶지 말고 더해준다. - 4. 음수끼리 계산할 때 0이 있다면 묶어준다.  이제 이 ..

백준 1339: 단어 수학 - javascript(그리디)

문제 출처 https://www.acmicpc.net/problem/1339 문제 풀이 이건 정말 아이디어가 필요했다. 난 정~ 말 복잡하게 풀었었는데, 해법을 보고 머리를 탁 ~ 쳤다 ! 앞으로 비슷한 문제가 있다면 이런 접근을 활용해야 겠다   이 문제는 사실 두개를 고려해야 하는데 우선순위가 높을 수록 높은 숫자를 받는 것이라고 할 때, - 높은 자리에 있을 수록 (십의 자리 > 일의 자리) 우선순위가 올라간다. - 빈번하게 나타날 수록 (만약 십의 자리에 있는 문자가 'A', 'B'가 있을 때, 만약 A가 일의 자리에 B보다 더 많이 나타났다면)우선순위가 올라간다. 이 복잡한 셈처럼 보이는 것이 아주 ~ 간단한 아이디어로 쉽게 풀린다.  "각 문자를 돌면서 해당 문자가 있는 자리수를 계속 더해주는..

백준 2110: 공유기 설치 - javascript(이진탐색, 그리디)

문제 출처 https://www.acmicpc.net/problem/2110 정답 풀이 흠 이 문제의 입력값을 봐보자. 집의 개수는 무려 (2공유기의 개수는 (2집의 좌표는 (0 엄청난 범위,,, 어떤 알고리즘이 생각나는가?이진탐색 !!!  이진탐색은 어떤 값을 기준으로 탐색해나갈 것인가가 중요하다. 여기서는 `공유기 사이의 최대거리`를 기준으로 탐색하면 되겠다.  공유기 사이가 될 수 있는 범위는 (1이상 ~ 가장 마지막 집 - 가장 첫번째 집) 이 될 것이다. 아래 그림을 보면 이해가 쉽다.   정리하자면,  - 공유기 거리의 최솟값은 : 1 - 공유기 거리의 최댓값은 :  마지막 집 위치 - 첫번째 집 위치    이제 문제를 두 부분으로 나눠서 생각하면 된다. - 공유기 최대 거리를 이진탐색으로 찾..

반응형