월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 포문은 별로일까요 :(?
일단 이런식으로 끝나는 시간으로 배열정렬의 기준을 잡고 sum으로 겹치는 사람들 계산해주면서 그 값을 answer배열로 넣어준 후 ...answer을 이용해서 그 중에 가장 큰 값을 답으로 해보았는데 괜찮은건가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런식의 전개는 문제가 있을까요??
일단 meeting.sort((a,b) => {if(a[1] === b[1]) return a[0]-b[0];else return a[1] - b[1]})이 아닌 그냥 (a,b) => a[1]-b[1])로 했을 때는 어떤 문제가 있을 수 있나요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
리턴의 유무의 차이 설명 부탁드립니다
안녕하세요 알고리즘 잘 배우고 있는 학생입니다.sort함수에 조건식에 리턴의 유무의 의미가 궁금합니다.리턴을 안하니 원하는 값이 안나와서 확실히 차이가 있어보이는데 이해가 잘 안가서요 :)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
10부제 문제, arr의 요소중 차량번호가 01, 02와 같이 한자리인경우
문제에서는 이런 이런 arr에 이런 요소가 안들어있엇는데 이런경우 10으로 나눈 나머지를 사용이 불가능할 것 같습니다 어떻게 풀어야 하나요? if문을 분기해주어야하나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문이 있습니다!
일단 코드를 이런식으로 짜보았습니다.이전에 배운 방식대로 해쉬값들을 sH에다가 넣어놓고 val을 비교하려고 하였습니다.일단 val%2!==0 을 적은 이유는 두 가지의 str을 합친 해쉬 객체의 val값이 짝수가 아니라면 서로 다른 수의 알파벳을 갖고 있기 때문에 그렇게 전개하였습니다.혹시 이렇게 하여도 문제가 없을까요? 효율성에서 떨어지는지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
벡트레킹 관련 문의
혹시 해당 강의에서 벡트래킹이랑 비트연산은 따로 안 다루는건가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 방법은 잘못된 풀이 방법인가요?
const main = (n) => { const memo = {}; for (let i = 0; i < n.length; i++) { const biggerThanCur = Object.keys(memo).find((key) => n[i] > key); if (!biggerThanCur) memo[n[i]] = dfs(i, 0); } function dfs(index, count, recent = 0) { if (index === n.length) { return count; } if (n[index] > recent) { count++; recent = n[index]; } return dfs(index + 1, count, recent); } let result = 0; for (const key in memo) { if (result < memo[key]) { result = memo[key]; } } return result; }; console.log(main([5, 3, 7, 8, 6, 2, 9, 4]));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 질문입니다~
const solution = (n: number): number => { return 1 < n ? n * solution(n - 1) : n; }; 이런식으로 짜는건 가독성이 안 좋을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
저도 문제 이해가 잘안되요 ㅜㅜ
안녕하세요. 문제를 읽고 혼자 생각해보다가 도저히 답을 못구해 강사님 풀이를 보고 의문이 들어 문의드려요. 문제상에서는 '낭비되는 DVD를 가급적 줄이려고 DVD의 크기(녹화 가능한 길이)를 최소로 하려고 한다'고 되어있는데, 문제 의도에 따르면 24가 더 좋은 답 아닐까 싶어서요. [1,2,3,4,5,6,7,8,9]를 [1,2,3,4,5,6] 에 1장 담고 [7,8,9]에 한장 담으면 두장에 전체 용량 48이면 담을수 있는데, 이걸 풀이과정 이분검색으로 진행하려다 보니 3장에 17로 나눠 담는 결과가 나와버리는데 총 용량이 51이 되버리면 제작사 입장에서는 48보다 51이 용량상 더 낭비가아닌가요? ㅜㅜ 그럼 문제 의도랑 다른 답이 나온게 되는데... 제가 뭔가 잘못 이해하고 있는걸까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 식으로 접근하는 것은 별로일까요?
function solution(arr: Array<number>): Array<number> { let cacheIdx: number = 0; for (let i: number = 0; i < arr.length - 1 - cacheIdx; i++) { for (let j: number = 0 + cacheIdx; j < arr.length - 1; j++) { if (0 < arr[j]) [arr[j], arr[j + 1]] = [arr[j + 1], arr[j]]; else cacheIdx++; } } return arr; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Section1 #6홀수 문제에서 min을 max safe integer로 초기화하는 대신 처음 홀수값으로 초기화하는 건 어떤가요?
안녕하세요 코린이입니다 강의 듣던 중 왜 굳이 max safe integer라는 상수를 써야 하나 의문이 들어 질문 남깁니다 min 변수를 값 할당 없이 선언만 해주고 아래처럼 첫 홀수를 할당해주는 건 어떤가 해서요 var min; if(x%2===1){ if(!min) min = x; } 혹시 이 코드는 함수의 모든 인자에 저 조건문을 돌리기 때문에 비효율적이라고 볼 수 있을까요? 감사합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 풀이 방법인데 괜찮을까요?
function solution(arr){ let answer = arr; for(let i=1; i< arr.length;i++){ for(let j=0;j<i;j++){ if(answer[i]<answer[j]){ [answer[i],answer[j]]=[answer[j],answer[i]]; } } } return answer; } let arr=[11, 7, 5, 6, 10, 9]; console.log(solution(arr)); 저는 첫번째 for문에서 answer[i]를 선택하여 두번째 for문을 앞에서부터 차례대로 돌며 버블정렬 하는 것처럼(?) 작은 경우 그 앞에 삽입하는 방식으로 문제를 해결하였는데 이 또한 삽입정렬로 봐도 괜찮을까요?그 전에 이 문제 풀이도 맞는지도 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
알고리즘 강의 너무 재밌어요 :)
(사진)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
5-8 모든 아나그램 찾기 다른 풀이 영상
다른분들 질문에서 시간복잡도 O(n)으로 푸는 아래 코드를 알려주셨는데 이에 대한 설명 강의는 언제 올려주시는 건가요? 혹시 이미 올라와 있다면 알려주시면 감사하겠습니다. function solution(s, t){ let answer=0; let sH = new Map(); for(let x of t){ sH.set(x, (sH.get(x) || 0)-1); } let len=t.length-1; for(let i=0; i<len; i++){ sH.set(s[i], (sH.get(s[i]) || 0)+1); if(sH.get(s[i])===0) sH.delete(s[i]); } let lt=0; for(let rt=len; rt<s.length; rt++){ sH.set(s[rt], (sH.get(s[rt]) || 0)+1); if(sH.get(s[rt])===0) sH.delete(s[rt]); if(sH.size===0) answer++; sH.set(s[lt], (sH.get(s[lt]) || 0)-1); if(sH.get(s[lt])===0) sH.delete(s[lt]); lt++; } return answer; } console.log(solution("bacacbcba", "abc"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰
// Section 4. 완전 탐색 (브루트 포스) - 졸업 선물 // 문제 해결 과정 // [v] 문제 이해 : 현재 예산으로 최대 몇명의 학생에게 선물을 사줄 수 있는지 구하기 // [v] 상품 하나를 50% 할인해서 살 수 있다. => 들어온 상품 중에 가장 "비싼" 상품에 할인을 적용 // [v] 각 상품과 배송비를 합친 후 오름 차순 정렬 // [v] 정렬된 리스트에서 예산이 될 때마다 감산 적용하고, 안된다면 그대로 stop -> cnt 반환 function solution(m, product) { let answer = 0; let max = Number.MIN_SAFE_INTEGER; // 가장 비싼 상품 찾아서 50% 할인 적용하기 for (let i = 0; i < product.length - 1; i++) { for (let j = 0; j < product[i].length; j++) { if (product[i + 1][0] > max) { max = product[i + 1][0]; } } } for (let i = 0; i < product.length; i++) { if (product[i][product[i].indexOf(max)]) { product[i][product[i].indexOf(max)] /= 2; } } // 각 상품과 배송비를 합쳐서 정렬한다. const sum_arr = quick_sort( product.map((value) => { return value[0] + value[1]; }) ); // 정렬된 리스트에서 예산이 될 때마다 감산 적용하고, 안된다면 그대로 stop -> cnt 반환 sum_arr.map((value) => { if (m - value < 0) return; m -= value; answer++; }); return answer; } function quick_sort(arr) { if (arr.length < 2) return arr; const left = []; const right = []; const middle = arr[0]; for (let i = 1; i < arr.length; i++) { if (arr[i] < middle) { left.push(arr[i]); } else if (arr[i] > middle) { right.push(arr[i]); } else { middle.push(arr[i]); } } return quick_sort(left).concat(middle, quick_sort(right)); } let arr = [ [6, 6], [2, 2], [4, 3], [4, 5], [10, 3], ]; console.log(solution(28, arr)); // 4 너무 불필요한 반복문이 사용되는걸까요 ? 어떻게 보시는지 궁금합니다 ..
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Section 7 뮤직비디오 결정 알고리즘 문제 관련
선생님 강의 잘 듣고 있습니다. 덕분에 알고리즘 실력 많이 올라가고 있습니다. 그런데 이 문제 관련... 도저히 정말 문맥상 이 부분이 이해가 안 가서 질문 드립니다... 혹시 제가 이상하게 이해한건지 오류가 있는건지... 제가 잘못 이해하고 있다면 좀 깨우쳐 주시고, 혹시 진짜 오류라면 수정 부탁드립니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
s=s+""; 안해줘도 상관없지 않나요?
안녕하세요. 어제부터 이문제를 보고있는데^^;; 궁금한점이 있어 한번더 여쭤봐요. 쌤께서는 s=s+" ", 하시고, for(let i=0; i<s.length-1; i++)로 for문 구간을 정해주셨는데, 제 생각에 s에 빈칸 안만들고 for(let i=0; i<s.length; i++)로 구간을 정해도 같은 인덱스 값 까지를 가르키는거 같아 그렇게 돌려보니 값이 같게 나오고 있는데, 어떻게 하든 상관없는 걸까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
lt랑 rt를 더해서 나누는 이유는 뭔가요??
안녕하세요 강사님 강의 잘 듣고 있습니다! 제목 그대로 lt랑 rt를 더해서 나누어 주는 이유가 뭔가요? 제가 놓친 부분이 있어서 이해를 못 하는 걸까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
String 붙여주는 이유가 궁금해요.
안녕하세요. 코드중에 if(cnt>1) answer+=String(cnt); 에서 cnt 앞에 String 붙이는 이유가 궁금해요. String은 문자열로 만들어주는 역할로 알고 있는데, 코드구현상 String을 붙이거나 안붙이거나 동일한 값을 출력하고 있는데 String를 꼭 붙여야 하는 이유가 뭔지 궁금해요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션4 K번째 큰 수
강의에서 for문을 돌리실 때 for(let i=0; i<n; i++){ for(let j=i+1; j<n; j++){ for(let k=j+1; k<n; k++){ tmp.add(card[i]+card[j]+card[k]); } } } j = i+1, k = j + 1 로 하게 되면 범위가 모든 숫자의 합의 경우의 수가 안나오지 않나요??? 예를 들어 입력 예제를 봤을 때 13 15 34 23 45 65 33 11 26 42 인 경우 13+13+13 같은 경우의 수는 빼고 값을 구하는 건데 문제에선 같은 숫자의 카드가 여러개 있을 수 있다고 되있어서요. 설명 한번만 해주시면 감사하겠습니다ㅠㅠ