월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
special sort 이런거도 가능할까요 ?
function solution2(arr) { let answer = arr; let n = arr.length; for (let i = 0; i < n; i++) { for (let j = 0; j < n - 1 - i; j++) { // 6회전일때 0, 1, 2 ( n - 1 - i)번째를 비교하게 되는데 그때 오름차순으로 정렬 되는 걸 막음 // n - answer.filter((v) => v < 0).length = 5 if (i === n - answer.filter((v) => v < 0).length) break; if (arr[j] > arr[j + 1]) { let tmp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = tmp; } } } return answer; } 음수의 갯수만 뽑아서 버블 소트 회전을 특정하게 막도록했는데..
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어봤는데 괜찮을까요?
안녕하세요 강의 잘보고있습니다 아래와 같이 풀어봤는데, 괜찮은지 궁금하여 질문드립니다 그리고 다른 테스트 케이스들이 예시로 있으면 더 좋을거같습니다 실제 문제풀이 사이트에서는 여러가지 케이스를 대입해서 다 통과하는지 테스트 해보는거처럼요 ! 혼자 테스트하다보면 된거같다가도 나중에 반례를 찾게되고 그러네요 ㅠ function solution(n, a) { let max = 0; let sum = 0; let p2 = 0; if (n === a.length) { max = a.reduce((sum, currValue) => { return sum + currValue; }, 0); } else { for (let p1 = 0; p1 < a.length; p1++) { if (p1 - p2 < n) { sum += a[p1]; } else { sum += a[p1]; sum -= a[p2]; p2++; if (sum > max) max = sum; } } } return max; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
// 뮤직비디오(결정알고리즘) function solution(m, songs) { let answer = 0; let max = Math.max(...songs); while (max) { let tmp = max; let cnt = 1; for (let j = 0; j < songs.length; j++) { if (tmp - songs[j] < 0) { tmp = max; cnt++; } tmp -= songs[j]; } if (cnt === m) { answer = max; break; } max++; } return answer; } let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; console.log(solution(2, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
else문에서 반복문과 DFS가 어떻게 돌아가는지 보충 설명 부탁드리겠습니다...
안녕하세요 강사님.강의 잘 듣고 있습니다. 다름이 아니라 else 문에서 반복문과 DFS가 어떤 순서로 돌아가는지 감이 좀 안잡히는데 보충 설명 가능하실까요? 반복문이 1~3까지 도는데 i 값이 1일때 DFS가 또 호출되고 다시 돌아올 때 i 값은 2부터 시작이 되는걸까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 식으로 풀어봐도 괜찮을까요?
선생님, 감사히 잘 보고 있습니다. 영상을 시청하기 전에 풀어봤는데요 커뮤니티 글을 보니까 제가 좀 비효율적으로 한 것인지 궁금해요 이런 식으로 백틱을 사용해서 바깥에서 answer 값을 구해봤는데.. 괜찮을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 재밌게 잘 풀고 있습니다.
스스로 풀다가 문제 이해가 안되서 영상을 보고 다시 풀어봤는데 for of를 이용하면 뭐가 다른지 몇번이나 돌려봐도 도저히 이해가 안됩니다 ㅠㅠ 어디서 달라지는걸까요 .. 바쁘신데 죄송합니다 function solution(s){ let stack= []; let answer =0; for(x of s){ if(x ==="(")stack.push(x); else{ stack.pop() if(stack[stack.length-1] === "(") answer+=stack.length; else answer++ } } console.log(answer) }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
indexOf 사용
function solution(n, k, card){ let sum = []; for(let i = 0; i < n; i++) { for(let j = i+1; j < n; j++) { for(let k = j+1; k < n; k++) { let card_sum = card[i] + card[j] + card[k]; if(sum.indexOf(card_sum) === -1) { sum.push(card_sum); } } } } sum.sort((a,b) => b-a); answer = sum[k-1]; return answer; } 이런식으로 indexOf 사용했는데, set을 사용하는것과 성능에서 차이가 있을까요?? 이렇게 풀이 해도 괜찮나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
function solution(m, product){ let answer=0; let temp = m; for(let p of product) { p[0] /= 2; let sum = []; for(let i of product) { sum.push(i[0] + i[1]) } sum.sort((a,b)=> a-b); let cnt = 0; for(let i = 0; i < sum.length; i++) { if(temp >= 0) { temp -= sum[i]; cnt++; } if((temp < 0 || i === sum.length-1) && (cnt >= answer)){ answer = cnt; break; } } temp = m; p[0] *= 2; } return answer; } * 이렇게 풀이를 해도 괜찮을까요? 1. 비용을 차례로 절반으로 한 뒤 가격+배송비의 배열을 오름차로 정렬시킴. 2. 예산에서 가격+배송비의 배열에서 하나씩 감소 시키며 개수 카운트함. 3. 개수의 최대를 answer로 함.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
function solution(times) { let answer = []; times.sort((a, b) => { if (a[0] === b[0]) { return a[1] - b[1]; } else return a[0] - b[0]; }); for (let i = 0; i < times.length; i++) { let cnt = 0; for (let j = 0; j < times.length; j++) { if (times[i][0] <= times[j][0] && times[i][1] > times[j][0]) { cnt++; } } answer.push(cnt); } answer = Math.max(...answer); return answer; } let arr = [ [14, 18], [12, 15], [15, 20], [20, 30], [5, 14], ]; console.log(solution(arr3)); 키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀이를 해도 반례가 없을까요?
function solution(s, t){ let answer=[]; let dist=1000; let temp = []; for(let i in s) { if(s[i] === t) temp.push(Number(i)); } for(let i in s) { for(let t of temp) { dist = Math.min(dist, Math.abs(t - Number(i))); } answer.distush(dist); dist = 1000; } return answer; } let str="teachermode"; console.log(solution(str, 'e'));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀이 리뷰 부탁드립니다
function solution(arr){ let answer=arr; for (let i=1; i<arr.length; i++){ let idx = i; for (let j=i-1; j>=0; j--){ if (arr[idx] < arr[j]) { [arr[idx], arr[j]] = [arr[j], arr[idx]]; idx = j; } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
정답 수식에서 return 이후에 정답에 더 가까운 값이 나올 가능성은 없나요?
선생님 안녕하세요 현재 식은 탐색 중에 한 번이라도 무게의 합이 허용값을 초과하면 리턴으로 식이 종료되도록 설계가 되어 있습니다 그런데 이 이후에 허용치 안에 있지만 좀 더 정답에 가까운 합계가 나올 가능성은 없나요? 선생님이 크롬 콘솔에서 보여주신 sum 리스트를 보면 작은값 큰 값 들이 섞여서 나오고 있어서요(영상 7:10초 부분)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코딩테스트를준비하고 있는 학생입니다.
코딩테스트 언어 선택에 javaScript(node.js)라고 적혀 있는경우 지금까지 강의와 같은 방법이 아닌 nodeJS 형식으로 입력을 해야하는 것입니까.. 아니면 보통 자바스크립트도 가능하고, nodejs도 가능 하다는 의미 입니까..?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
4번 풀이 한번 봐주시면 감사하겠습니다
function solution(str, t) { let answer = ""; for (let i in str) { let min = 1000; for (let j in str) { if (str[j] === t) { let dist = Math.abs(i - j); min = min > dist ? dist : min; } } answer += `${min} `; } return answer; } console.log(solution("teachermode", "e")); 이렇게 풀어봤는데 괜찮을까요??? (시간 복잡도는 더 안좋은거죠?) 그리고 혹시 문자 t가 해당 문자열에 아예 존재하지 않는 경우에 대한 예외처리는 할 필요없을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다.
강의 잘 듣고 있습니다. 감사합니다. Queue를 처음 배우고 있어 혼자 풀 때 아래와 같이 풀었는데 반례가 있을지 궁금합니다. function solution(need, plan) { let answer = "YES"; let planArr = plan.split(""); let max = -1; for (let x of need) { let YN = false; for (let i = 0; i < planArr.length; i++) { if (x === planArr[i]) { YN = true; if (max < i) { max = i; } else { answer = "NO"; } break; } } if (!YN) { answer = "NO"; } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
공부 방법에 대해
안녕하세요,선생님이 다른 문의사항에 답글로 달아주신 내용(맨 밑에 복붙)에서,30분 정해두고 문제를 풀어보라고 권유하셨는데요,이 30분이라는게 한 문제당 30분인지요???잘 몰라서 그런지, 1문제에 30분 할당하는 건 꽤 긴 시간 같다고 생각들어서 문의드립니다!-- --다른 문의글에서 답변 해주신 내용-- 안녕하세요^^ 알고리즘은 누구나 처음에는 어렵습니다. 저도 처음 배울때 한 문제를 제가 정해놓은 시간 안에 짜지 못하면 다시 짜고 하는 식으로 10번, 20번 넘게 짜본적도 있습니다. 잠시 머리속에서 머뭇거리고 손이 움직이지 않으면 정해놓은 시간을 초과해 버리도록 시간을 정해놓고 공부했습니다. 진짜 초시계 들고 코드짜기를 했던게 많이 도움이 되었습니다. 그렇게 하니 완전 외워져버리더라구요. 이게 주입식같지만 머리속에 외워져 버린게 다 피가되고 살이되어 다른 문제 풀때 쉽게 응용력이 생겼던 것 같습니다. 지금처럼 영상을 보면서 섹션8까지 완강하시고 난 후 다시 섹션1부터 모든 문제를 먼저 30분정도 도전해 보시고 안되면 영상을 보기 보다는 제가 제공한 소스코드를 슬쩍 보시고 감을 잡은 후 다시 코드를 도전해 보는 식으로 공부해보세요. 그 다음 어느정도 자긴감이 생기면 잘 안되는 문제만 초시계 들고 해당 문제에 맞게 스스로 시간을 정해놓고 저처럼 해보세요. 화이팅하세요~~
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
배열? 문자열?
function solution(a, b){ let answer = Array.from({length:5}, ()=>"B"); // for문을 돌면서 a[i], b[i] 를 비교해. for (let i=0; i<a.length; i++){ if(a[i]===1 && b[i]===3) answer[i]="A"; else if(a[i]===2 && b[i]===1) answer[i]="A"; else if(a[i]===3 && b[i]===2) answer[i]="A"; else if(a[i]===b[i]) answer[i]="D"; } return answer; } let a=[2, 3, 3, 1, 3]; let b=[1, 1, 2, 2, 3]; console.log(solution(a, b)); Q. 1번 질문 저는 answer을 배열로 두고 풀었는데요 선생님! 선생님께서는 문자열로서의 answer로 하셨는데, 프로그래머스와 같은 사이트에서 배열로 넘기든 문자열로 넘기든 정답이라고 처리되는 건가요? 예를들어 answer= "A B A B D" (문자열-선생님 버전) answer=["A", "B", "A", "B", "D"] (배열 - 제 버전) 이 두개 모두 정답 처리 되나요? Q. 2번 질문 그리고 문자열로 넘기실 때 " " 빈칸 문자열을 같이 넣으셨는데 이건 꼭 필요한 건가요? 생략해도 되나요? 감사합니다 :)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
[가장짧은 문자거리] - 찾으려는 E의 위치를 담고 거리를 비교하는 방식은 어떤가요 ?
function solution(s, t) { let answer = []; let n = s.length; let distance = 0; let eArr = []; // 문자열의 e 찾아 담아라. s.split("").forEach((item, i) => { if (item === t) eArr.push(i); }); let arr = []; let count = 0; // 현재 문자열을 기준으로 e가 담긴 배열의 길이 차이를 뺀 후 최소의 거리 값을 넣어라. for (let i = 0; i < n; i++) { console.log("현재 s :" + s[i]); for (let j = 0; j < eArr.length; j++) { let eDistance = eArr[j]; let diff = Math.abs(i - eDistance); arr.push(diff); count = Math.min(...arr); } answer += `${count} `; arr = []; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문자열을 나타내실때!
안녕하세요 선생님 ㅎㅎ 사소한 질문입니다! let pos = s.indexOf('k') 를 입력하실때 괄호( )안에 처음에 "k"로 입력하셨다가 'k'로 바꾸셨는데요. 이유가 따로 있으신걸까요? 문자열은 "" 또는 ''로 표현한다. 그리고 왠만하면 하나로 통일한다. 로 나름의 규칙을 혼자 세우고 있었는데 처음에 answer = ""; 로 먼저 적어놓았으니 이 이후로 부터 문자열을 나타내는 기호는 ""로 통일해야겠군! 이라는 생각을 했었거든요. 그런데 선생님께서 ""와 ''를 둘다 사용하시는 걸 보고 궁금증이 들었습니다! ""와 ''의 사용 기준(?)이 궁금합니다. 감사합니다 ㅎㅎ :)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if를 중첩으로 사용
function solution(arr,m){ let answer=0; let n=arr.length; arr = arr.sort((a,b)=>(a[0]+a[1])-(b[0]+b[1])); for(let i=0; i<n; i++){ let money = m-(arr[i][0]/2)+(arr[i][1]); let cnt = 1; for(let j=0; j<n; j++){ let tot = arr[j][0]+arr[j][1]; if(arr[i]!==arr[j]){ if(money - tot < 0){ break; } if(money - tot >= 0){ money-=tot; cnt++; } } } answer=Math.max(answer, cnt); } return answer; } let arr=[ [6,6], [2,2], [4,3], [4,5], [10,3] ] console.log(solution(arr,28)); 이렇게 풀었는데 if(i !== j) 안에 넣는 방식보다는 &&연산자를 사용하는 방식이 더 좋을까요?