월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도되나요?
function solution(arr) { let answer = 0; let max = arr[0]; for (let i = 0; i <= arr.length; i++) { if (max < arr[i + 1]) answer++; max = arr[i + 1]; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
궁금한 점이 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 왜 moves 탐색시 for...of가 아니라 forEach를 쓰시는건가요?? for...of도 사용할 수 있지 않나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution() { let answer; let calStack = []; for(let i of cal) { if(isNaN(i)) { let num1 = calStack.pop(); let num2 = calStack.pop(); let val = 0; switch(i) { case '+': val = num1 + num2; break; case '-': val = num2 - num1; break; case '*': val = num1 * num2; break; case '/': val = num2 / num1; break; } calStack.push(val); } else calStack.push(Number(i)); // i는 문자이기 때문에 숫자로 바꾸어 stack에 push 해야함 } answer = calStack[0]; return answer; } let cal = "352+*9-"; console.log(solution()); switch 문을 이용해서 문제를 풀었는데 괜찮은 코드인가요? 효율성면에서 if문이 switch문보다 좋은지도 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(str) { let answer = []; for(let i of str) { if(i != ')') answer.push(i); else { while(answer[answer.length - 1] != '(') { answer.pop(); } answer.pop(); } } return answer.join(''); } let str = "(A(BC)D)EF(G(H)(IJ)K)LM(N)"; console.log(solution(str));해당 코드도 괜찮은 코드인가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort방식
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님!!이 문제를 sort로도 풀 수 있을까요?주어진 문자열 두개를 split해서 sort하고 join한 값이 일치하느냐에 따라서 answer를 반환하는 로직을 세워봤습니다. 이렇게 풀어도 문제는 없을까요?function solution(str1, str2) { let answer = ""; let sortStr1 = str1.split("").sort(); let sortStr2 = str2.split("").sort(); if (sortStr1.join("") == sortStr2.join("")) { answer = "YES"; } else { answer = "NO"; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 방식으로 문제를 푸는 건 어떻게 생각하시나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(alphaStr1, alphaStr2) { let answer = "YES"; let alphaMap = new Map(); for(let i of alphaStr1) { if(alphaMap.has(i)) alphaMap.set(i, alphaMap.get(i) + 1); else alphaMap.set(i, 1); } for(let i of alphaStr2) { if(alphaMap.has(i)) alphaMap.set(i, alphaMap.get(i) - 1); else return "NO"; } for(let [key, val] of alphaMap) { if(val != 0) answer = "NO"; } return answer; } let alphaStr1 = "AbaAeCe"; let alphaStr2 = "baeeACA"; console.log(solution(alphaStr1, alphaStr2));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.잘 구현한 게 맞는지 궁금합니다.function solution(day, saleArr) { let answer; let start = 0; let sum = 0; let max = Number.MIN_SAFE_INTEGER; for(let end = 0; end < day; end++) { sum += saleArr[end]; } max = sum; for(let end = 3; end < saleArr.length; end++) { sum = sum + saleArr[end] - saleArr[start++]; if(sum > max) max = sum; } answer = max; return answer; } let day = 3; let saleArr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(day, saleArr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
글이 삭제가 안됩니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 글이 삭제가 안되네요..그래서 삭제하지 못하고 이렇게 남겨놓습니다. 해당 질문 신경쓰지 말아주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님! 코드 한번만 봐주실 수 있을까요?
const solution = (nums) => { let sumNum = 0 let minNum = Number.MAX_SAFE_INTEGER let oddNums = nums.filter((num) => { return num % 2 !== 0 }) oddNums.forEach((num) => { sumNum += num if (num < minNum) minNum = num }) return [sumNum, minNum] }위와 같이 짜봤는데 비효율적인 코드인가 싶어서 여쭤봅니다! (구지 filter와 forEach를 쓸 필요까지는 없었나 싶어서...) 효율성적인 측면에서 볼 때 어떤지 궁금합니다
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어봤는데, 시간 복잡도가 많이 증가하는 코드 일까요?
(사진)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!!
안녕하세요 선생님!강의를 듣기 전에 혼자 풀어보았습니다.이중 for문으로 풀어서 시간복잡도 상으로는 좋지 않을 것 같은데 이것도 괜찮은 코드일까요? function solution(k, arr) { let answer = 0; let sum = 0; let check = 0; for (let i = 0; i < arr.length - 2; i++) { for (let j = 0; j < k; j++) { sum += arr[i + j]; check += 1; } answer = Math.max(answer, sum); sum = 0; check = 0; } return answer; } let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(3, a));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션1-8 일곱난쟁이 문제 질문
안녕하세요. 강의 코드와 결과가 이해가 되지 않아 질문드립니다. for (let i = 0; i < 8; i++) { for (let j = i + 1; j < 9; j++) { if (sum - (arr[i] + arr[j]) === 100) { arr.splice(j, 1); arr.splice(i, 1); } } }중첩 for문 중에서 내부에서 조건문을 사용해서 참일 경우 배열에 splice를 통해 요소를 제거를 해주는 코드에서 의문이 생겼습니다.중첩 for문이기 때문에 외부 for문에서 i=0 으로 시작하여 내부 for문으로 이동j=i+1 이므로 배열의 0번째 인덱스 요소를 기준으로 1번째 인덱스 요소부터 j<9 요소까지 탐색탐색 중 if (sum - (arr[i] + arr[j]) === 100) 조건에 참인 요소가 있다면 splice 메서드를 통해 제거, j<9 요소까지 탐색을 마쳤다면 내부 for문 종료다시 외부 for문으로 이동하여 i=1 로 증감 후 다시 내부 for문 실행..저는 이와 같은 절차를 가진다고 생각하는데요, 3번 절차에서 조건에 참인 요소가 있다면 splice 메서드를 통해 제거가 되므로 21과 19가 제거 되는것은 이해가 되는데 왜 15와 25까지 함께 제거가 되는지 의문입니다! 21과 19가 제거된 상태라면 (sum - (arr[i] + arr[j]) === 100) 조건에 참일 수가 없을 거 같아서요.결론은 중첩 for문인데 21과 19 그리고 15와 25까지 함께 제거가 되는지 의문입니다!감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
해당 풀이의 런타임 질문드립니다
안녕하세요.해당 문제와 유사한 문제를 찾아서 복습을 하고 있었는데, 런타임 에러라고 뜨는데요, 무엇이 문제인지 확인 부탁드려도 될런지요.인프런은 아니고 해당 문제와 유사한 문제를 찾아풀고 있던 타사이트라고, 송구스러운데요.참고로 제 브이에스코드를 이용했을 땐 콘솔에 답이 출렵됩니다. 다만 해당 사이트에서 풀때는 런타임에러라고 합니다.강사님 풀이와 동일하게 풀었는데, 제가 무엇을 놓쳤는지 궁금해서 문의드려봅니다.https://leetcode.com/problems/merge-two-sorted-lists/description/ var mergeTwoLists = function(list1, list2) { let answer = []; let n = list1.length; let m = list2.length; let p1 = (p2 = 0); while (p1 < n && p2 < m) { if (list1[p1] <= list2[p2]) answer.push(list1[p1++]); else answer.push(list2[p2++]); } while (p1 < n) answer.push(list1[p1++]); while (p2 < m) answer.push(list2[p2++]); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
최대값 지정후 Math.max()로 풀어도 될까요.
감사합니다. function solution(arr) { let answer = 0; let max = Number.MIN_SAFE_INTEGER; for (let i = 0; i < arr.length; i++) { if (arr[i] > max) answer++; max = Math.max(arr[i], max); } console.log(answer); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
minimum 을 지정한 뒤 푸는 방법은 어떤가요?
안녕하세요. minimum 을 지정한 뒤 푸는 방법은 어떤가요? 답을 나왔는데 반례가 있는지, 괜찮은지 궁금합니다.감사합니다. function solution(arr) { let answer = []; let min = Number.MIN_SAFE_INTEGER; for (let i = 0; i < arr.length; i++) { if (arr[i] > min) answer.push(arr[i]); min = arr[i]; } return answer; }
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 6. 쇠막대기 문제풀이(질문)
선생님 안녕하세요 !문제풀이 과정에서 제가 푼 방법과 조금 다른거 같아서 이렇게 코드 작성해도 괜찮을지질문 드립니다. 매일 빠른 답변 감사드립니다 ! <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(s){ let answer = 0; let stack = []; for(let i=0;i<s.length;i++){ if(s[i] === "(") { stack.push('('); answer += 1; } else { if(s[i-1] === '(') { stack.pop(); answer -= 1; answer += stack.length } else { stack.pop(); } } } return answer; } let str = "(((()(()()))(())()))(()())"; console.log(solution(str)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 풀이도 가능한지 궁금합니다 !
function solution(M, arr) { const N = arr.length; let answer = Number.MIN_SAFE_INTEGER; for (let i = 0; i < N; i++) { let pp = []; // 상품 가격 let pd = 0; // 배송비 let cnt = 1; pp.push(arr[i][0]); pd += arr[i][1]; for (let j = i + 1; j < N; j++) { pp.push(arr[j][0]); pd += arr[j][1]; cnt++; const maxPrice = Math.max(...pp); // 총 가격 계산 const totalProductPrice = pp.reduce((total, val) => { if (val === maxPrice) total += val / 2; else total += val; return total; }, 0); const totalPrice = totalProductPrice + pd; if (totalPrice > M) break; answer = Math.max(answer, cnt); } } return answer; } 현재 예제에서는 답이 나오는데 괜찮은지 문의드립니다 !
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다!
강사님, 안녕하세요.문제를 미리보고 강의를 들었는데, 큰 개념은 비슷하지만 코드의 시간복잡도, 공간복잡도가 다를 수 있을 것 같아서 코드리뷰를 요청드립니다. for문을 통해 슬라이딩 윈도우를 하면서, 문자열을 쪼개고 아나그램을 비교할 때도 매번 Map을 생성하는 부분에서 비효율적인 부분이 있을 것 같은데 한번 확인부탁드리겠습니다. { function isAnagram(s: string, t: string) { const hash = new Map(); for (let val of t) { if (!hash.has(val)) hash.set(val, 1); else hash.set(val, hash.get(val) + 1); } for (let val of s) { if (!hash.has(val) || hash.get(val) === 0) return false; else hash.set(val, hash.get(val) - 1); } return true; } function solution(s: string, t: string) { let answer = 0; let n = t.length; let substr = s.slice(0, n); if (isAnagram(substr, t)) answer++; for (let i = n; i < s.length; i++) { substr = substr.slice(1) + s[i]; if (isAnagram(substr, t)) answer++; } return answer; } const s1 = "bacaAacba"; const s2 = "abc"; console.log(solution(s1, s2)); }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
function solution (arr){ let answer = []; let count = 1; for(i=0; i<arr.length; i++) { let max = Math.max(...arr); for(j=0; j<arr.length; j++) { if(arr[j] === max && arr[j] !== 0){ answer[j] = count; arr[j] = 0; if(Math.max(...arr) !== max) count++; } } } return answer;}
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 5. 연속 부분수열 2
선생님 안녕하세요 ~알고리즘 관련 문제 질문 드립니다.정답은 이렇게 구현해도 맞을거 같은데, 알고리즘 적으로 이렇게 구현하면 안될까요??<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(arr, m){ let answer = 0; let lt=rt=0; let sum = 0; while(lt < arr.length){ sum += arr[rt] if(sum <= m){ answer += 1; rt += 1; } else{ lt += 1; rt = lt; sum = 0; } console.log(sum) } return answer; } let arr = [1,3,1,2,3]; console.log(solution(arr, 5)); </script> </body> </html>