25%
57,750원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요! 코드 평가 부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(m, arr) { let answer = 0, end = 0, sum = 0; for (let start = 0; start < arr.length; start++) { end = start + 1; sum += arr[start]; if (sum <= m) { answer++; } while (sum < m && end < arr.length) { sum += arr[end]; if (sum <= m) { answer++; end++; } } sum = 0; } return answer; } let a = [1, 3, 1, 2, 3]; console.log(solution(5, a));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
split 사용
function solution(s) { let answer = ""; let count = 0; for (let i = 0; i < s.length; i++) { if (s[i] === s[i + 1]) { count++; } else if (s[i] !== s[i + 1]) { answer += s[i] + (count + 1); count = 0; } } return answer.split("1").join(""); } let str = "KKHSSSSSSSE"; console.log(solution(str));강사님 코드가 거의 비슷한데 마지막에 1을 없애주기 위해서 split을 사용해서 1을 없애 주고 다시 문자열로 만들어주었는데, 이정도는 시간과 별로 상관이 없나요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !
function solution(need, plan) { let answer = 'YES'; let queue = []; for (let x of plan) { if (need.includes(x)) queue.push(x); } if (need !== queue.join('')) return 'NO'; return answer; } let a = 'CBA'; let b = 'CBDAGE'; console.log(solution(a, b)); 큐로 접근해서 문제풀이하고 싶었으나 비효율적(?)으로 풀어버렸습니다 😂 혹시 이렇게 풀이해도 괜찮은걸까요 ? 리뷰 부탁드립니다 !
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
바둑이 승차관련 sum>c return으로 조건을 돌면 최대값을 찾기 전에 프로그램이 종료되는건 아닌가요??
<script> function solution(c, arr){ let answer=Number.MIN_SAFE_INTEGER; let n=arr.length; function DFS(L, sum){ if(sum>c) return; if(L===n){ answer=Math.max(answer, sum); } else{ DFS(L+1, sum+arr[L]); DFS(L+1, sum); } } DFS(0, 0); return answer; } let arr=[81, 58, 42, 33, 61]; console.log(solution(259, arr)); </script> 아직 재귀에 대한 이해가 짧아 잘 모르겠습니다.답은 242인데,만약 sum의 값이 181이었고 다음에 나온 sum의 값이275라고 한다면sum>259일때 return으로 함수가 종료되고최대값인 242를 찾지 못하고 181로 종료가 될수도 있는것 아닌가요??아니면 제가 이해를 잘못한건지요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
아래 코드와 같이 구현해도 시간복잡도는 같을까요?
function solution(m, arr) { let answer = 0; let n = arr.length; let p1 = 0; let p2 = 1; let tmp = arr[p1] + arr[p2]; while (p2 < n) { if (tmp === m) { answer++; tmp = tmp - arr[p1++] + arr[++p2]; } else if (tmp < m) { tmp += arr[++p2]; } else { tmp -= arr[p1++]; } } return answer; } let a = [1, 2, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort 할 때 문자열은 자동으로 유니코드값으로 변환되어 계산되지 않나요?
timeLine.sort((a, b) => a[0] == b[0] ? a[1] - b[1] : a[0] - b[0] ); sort는 문자열을 값으로 가진 비교는 자동으로 유니코드값으로 변환되어 비교하는줄 알았는데 저렇게 하니 [ [ 5, 's' ], [ 12, 's' ], [ 14, 's' ], [ 14, 'e' ], [ 15, 'e' ], [ 15, 's' ], [ 18, 'e' ], [ 20, 'e' ], [ 20, 's' ], [ 30, 'e' ] ]이렇게 s가 먼저 나올 때도 있고 e가 먼저 나올때도 있고 하더라구요 원래 sort 할 때 문자열은 자동으로 유니코드값으로 변환되어 비교되지 않나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
그래프와 탐색- 4. 미로탐색 시간복잡도 관련
안녕하세요 항상 좋은 강의 잘 듣고 있습니다!선생님께서 가르쳐주신 풀이 방식이 생각한대로 나름 직관적(?)이여서 다른 문제에서도 잘 사용하고 있는데 아무래도 재귀방식이다보니 시간복잡도에서 시간초과가 발생합니다. 이러한 DFS 방식에서 시간복잡도를 낮추는 방법이 있을까요?또한 선생님께서는 이러한 문제 풀때 시간복잡도 관련해서 어떻게 해결하시나요?(예를들어 다른 풀이방식을 선호한다던지.. 등등)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스택프레임 관련 질문드립니다.
안녕하세요 항상 강의 잘 듣고 있습니다.5.합이같은 부분집합 문제에서 flag 변수를 이용해서 yes가 나오면 스택에 남아 있는 함수들만 호출되고 다른 재귀호출은 없이 끝내셨는데 혹시 아래 풀이에서와 같이 for, while의 반복문에서 break를 사용하면 불필요한 재귀호출 없이 끝낼 수 있나요?아래 풀이는 프로그래머스 스킬트리 문제 풀이에서 발췌했습니다!for (let i = 0; i < skillTree.length; i++) { if ( mySkillSet.has(skillTree[i]) && skillTree[i] === mySkill[mySkillIndex] ) { mySkillIndex++; } else if (mySkillSet.has(skillTree[i])) { canSkill = false; break; } }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 드립니다.
BFS에서 queue 배열 활용 할 때, shift로만 처리하시던데,pop을 사용하면 어떤 차이가 있을까요???단순히 해당 Level에서 처리하는 순서만 달라지지, 층 먼저 탐색한다는 BFS 개념에 위배되지는 않다고 생각해도 맞을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
마구간 정하기
안녕하십니까 강사님!마구간 정하기 문제를 풀이하실때 말이 3마리인 경우를 가정하고 풀어주시는데 풀이코드로 말이 4이상인 경우 대응이 가능한가요? 문제에 C마리라고 되어있어서요!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
function solution(k, arr) { let answer = (sum = lt = 0); for (let rt = 0; rt < arr.length; rt++) { let leng = rt - lt + 1; sum += arr[rt]; if (leng === k) { answer = Math.max(answer, sum); sum -= arr[lt++]; } } return answer; } let a = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(3, a));투포인터로 풀어봤습니다.. 이렇게 풀어도 되는걸까요 ?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다.
(사진)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드리겠습니다.
function solution(str, list) { let mustWord = str.split(''); // c, b, a let fullWord = list.split(''); while (fullWord.length !== 0) { if (mustWord[mustWord.length-1] === fullWord[fullWord.length-1]) { mustWord.pop(); fullWord.pop(); } else { fullWord.pop(); } } return mustWord.length !== 0 ? "NO" : "YES";
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
리뷰 부탁드립니다!
이런 식의 풀이는 조금 더 안좋은 풀이 방식일까요? function solution(n, arr){ const answer = arr.filter((item) => String(item).charAt(1) === String(n)) return answer.length; } const arr=[12, 20, 54, 30, 87, 91, 30]; console.log(solution(0, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도 O(2^N)인거는 상관없나요?
문제보면 배열 원소 크기 제한이 백만개 이하던데O(2^N)로는 너무 오래 걸리는 풀이 같아요.일단 지금은 DFS를 연습하는 정도로만 받아들이면 될까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
자바스크립트 추가 강의
안녕하세요 강사님이 진행중이신 python이나 c++ 강의보다 javascript로 된 강의가 전체적으로 문제가 적은 것 같더라고요. 혹시 추후에 다른 강의들에 있는 내용을 javascript로 올려주실 계획이 있으신가해서 여쭤봅니다. 특히 추가적인 DFS, BFS에 해당되는 문제들이 있었으면 좋겠습니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
삽입 정렬 기존 질문을 보았는데 j값이 왜 -1이 되는지 모르겠어요 ㅠㅠ
for(let j = 3; j>=0; j--){console.log(j)}이걸 찍어보면 j 값이 0에서 멈춤니다. 강의에서는 j값이 -1일때 멈추고 arr(j+1) = tmp로 초기화 한다고 하셨는데 아무리 고민해 봐도 왜 j가 -1이 되는지 모르겠습니다 ㅠㅠ
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
function compareMaps(mapA, mapB) { if (mapA.size !== mapB.size) { return false; } for (let [key, value] of mapA) { if (!mapB.has(key) || mapB.get(key) !== value) { return false; } } return true; } function solution(map1, map2) { let mapA = new Map(); let mapB = new Map(); let lt = 0; let n = map2.length; let answer = 0; for (let rt = 0; rt < map1.length; rt++) { if (rt < n) mapB.set(map2[rt], mapB.get(map2[rt]) + 1 || 1); mapA.set(map1[rt], mapA.get(map1[rt]) + 1 || 1); if (rt >= n) { mapA.get(map1[lt]) == 1 ? mapA.delete(map1[lt]) : mapA.set(map1[lt], mapA.get(map1[lt]) - 1); lt++; } if (rt >= n - 1) { if (compareMaps(mapA, mapB)) answer++; } } return answer; } let a = "bacaAacba"; let b = "abc"; console.log(solution(a, b));모든 아나그램 찾기 코드리뷰 부탁드립니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다!
function solution(str1, str2) { let map1 = new Map(); let map2 = new Map(); for (let i = 0; i < str1.length; i++) { map1.set(str1[i], map1.get(str1[i]) + 1 || 1); map2.set(str2[i], map2.get(str2[i]) + 1 || 1); } console.log(map1, map2); for (let [key, value] of map1) { if (!map2.has(key) || value !== map2.get(key)) return "NO"; } return "YES"; }5-7 아나그램 문제 풀어보았는데요,시간복잡도면에서 강사님 풀이와 크게 차이 안나겠죠??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다.
안녕하세요. 1번 노드 check를 DFS 호출 전 check[1] = 1과 같이 하셨는데,아래와 같이 DFS 안쪽 첫째 라인에 하는 건 어떨까요?? // ... const DFS = (v) => { checkArr[v] = 1 if (v === n) { answer++ } else { for (let i = 1; i <= n; i++) { if (graph[v][i] === 1 && checkArr[i] === 0) { DFS(i) checkArr[i] = 0 } } } } DFS(1)