본문 바로가기

전체 글

(432)
[230414] N개의 최소공배수 문제 풀이 function solution(arr) { const getGCD = (a, b) => a % b === 0 ? b : getGCD(b, a % b); const getLCM = (a, b) => a * b / getGCD(a, b); return arr.reduce((a,b) => getLCM(a, b)); } 이전에 유클리드 호제법을 이용한 최대공약수(GCD), 최소공배수(LCM) 공식을 이용하여 풀이했다.
[230414] 예상 대진표 문제 풀이 function solution(n, a, b) { let answer = 0; while(a !== b) { a = Math.ceil(a / 2); b = Math.ceil(b / 2); answer++; } return answer; } a와 b를 /2하고, Math.ceil()한 값이 동일하면 그만 answer ++; 다른 사람의 풀이에서도 동일하게 풀이했더라..
[230413] 크기가 작은 부분문자열 문제 풀이 function solution(t, p) { let answer = 0; for(let i = 0; i < t.length - p.length + 1; i++) { const tNum = t.slice(i, i + p.length); if(+tNum
[230412] 카펫 문제 풀이 첫 풀이 function solution(brown, yellow) { const sum = brown + yellow; const sqrt = Math.sqrt(sum); if(sum % 2 === 1 && sqrt === sum / sqrt) return [sqrt, sqrt]; let min = 1 + sum; const answer = []; for(let i = 2; i pairSum) { min = pairSum answer[0] = Math.max(sum/i, i); answer[1] = Math.min(sum/i, i); }; } return answer; } 테스트 4, 6, 7, 8 불통 질문하기에서 불통인 이유를 살펴보니 다음과 같은 이유였다. 프로그래머스 코드 중심의 개발..
[230411] 피보나치 수 문제 풀이 첫 풀이 function solution(n) { return fibo(n) % 1234567; } const fibo = (n) => { if(n === 0) return 0; if(n === 1) return 1; if(n === 2) return 1; return fibo(n-1) + fibo(n-2); } 예상했겠지만, 이미 구한 피보나치 수를 또다시 구하는 구조이기 때문에 시간 초과가 발생해서 통과하지 못한다. 두 번째 풀이 이미 구한 피보나치 수는 배열(fiboArray)에 저장하는 구조로 재작성하였다. const fiboArray = [0, 1, 1]; function solution(n) { return fibo(n); } const fibo = (n) => { if(fiboAr..
특정 동작 시, useQuery하기 검색 원인 어떤 버튼을 클릭했을 때 method가 GET인 API를 useQuery로 실행하고 싶었다. 해결법 useState를 이용해서 useQuery의 옵션 중에서 enabled를 state값으로 주고, 어떤 동작을 했을 때 setState를 true로 바꾼다. 추가로, 이렇게 하면 enabled가 계속 true로 남아있기 때문에 GET 요청을 계속해서 하게 된다. 따라서 해당 요청이 성공했을 시에 state값을 다시 false로 바꾸는 코드까지 작성해주었다. // MessageText.tsx const MessageText = () => { const [fetchInvite, setFetchInvite] = useState(false); useAcceptInvite(link, fetchInvite,..
[230327] 구명보트: Greedy 알고리즘 탐욕 알고리즘(Greedy Algorithm) greedy: 탐욕스러운, 욕심이 많은 즉, 매 순간 가장 좋아 보이는 것만 선택하며, 현재 선택이 나중에 미칠 영향에 대해서는 고려하지 않음 기준에 따라 좋은 것을 선택하는 알고리즘이므로, 문제에서 ‘가장 큰 순서대로’, ‘가장 작은 순서대로’와 같은 기준이 제시된 경우에 응용한다. 예제: 거스름돈 🧸 문제 당신은 음식점의 계산을 도와주는 점원이다. 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리의 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러줘야 할 돈이 N원일 때 거슬러 줘야 할 동전의 최소 개수를 구하라. 단, 거슬러 줘야 할 돈 N은 항상 10의 배수이다. 문제 해설 동전의 최소 개수를 구해야 하는 문제이므로, 가장 큰 ..
[230326] 짝지어 제거하기: stack 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 내 풀이 i가 첫 번째 원소라서 stack에 원소가 하나밖에 없을 때, stack[stack.length - 2]는 undefined 다. function solution(s) { const stack = []; for(let i of s) { stack.push(i); if(stack[stack.length - 1] === stack[stack.length - 2]){ stack.pop(); stack.pop(); } } return stack.length === 0 ? 1 : 0; } (+) 효율성 ..

반응형