월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
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)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for문 말고 for of문 쓰시는 이유가 있나요?
저는 for문이 더 익숙해서 for문을 주로 쓰는데 for of문을 쓰는게 더 나은가 해서요
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 드립니니다.
const solution = (n) => { let answer = n const DFS = (m) => { if (m === 0) return else { answer = answer * m DFS(m - 1) } } DFS(n - 1) return answer }이전까지 설명해주셨던 패턴으로 풀면 위와 같이 전역변수를 설정하고, 그 값을 계속 재할당하는 코드가 나오는데,이번 강의 예제는 끝까지 콜스택을 타고타고 타서 마지막에 할당하고 리턴하던데,두 코드에서 개념적으로 어떤 차이점이 있는 걸까요? 그냥 단순히 패턴이 다르다고 이해하면 될까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀이법 질문드립니다.
이렇게 풀어도 되나요?function solution(n) { let answer = []; function DFS(L) { if (L === 0) return; else { answer.unshift(L % 2); L = Math.floor(L / 2); DFS(L); } } DFS(n); return answer.join(""); }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제를 풀 때 시간복잡도니 성능상 문제 설명은 후반에 알려주시는건가요?
안녕하세요. 문제풀이 재미있게 잘 보고있습니다.궁금한게 있어서 이렇게 질문 남깁니다.지금은 초보 문제이기에 시간복잡도나 이러한거는 설명없이 문제만 풀고 프로세스 설명만 있는건가해서 질문남깁니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 반례가 있을까요??
function solution(n, k, card) { card.sort((a, b) => b - a); return card[0] + card[1] + card[k + 1]; } let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42]; console.log(solution(10, 3, arr));4-5 k번째 큰 수를 간단하게 풀어봤는데 혹시 반례가 있을까요??