월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 코드 리뷰 부탁드립니다.
function solution(test) { let answer = 0; let flag = 0; let m = test[0].length; let n = test.length; // 첫번째 시험에서 도출되는 총 경우의 수 for (let i = 1; i < m; i++) answer += i for (let i = 0; i < m - 1; i++) { for (let j = i + 1; j < m; j++) { flag = 0; for (let k = 1; k < n; k++) { if (test[k].indexOf(test[0][i]) > test[k].indexOf(test[0][j])) { flag = 1; break; } } if (flag) answer--; } } return answer; } 강사님께서 이 문제 관련하여 다른 분께 답변해주신 테스트케이스는 모두 통과하였습니다. 코드 설명드리자면, 첫번째 시험으로 도출되는 경우의 수를 구한 후 for문을 돌면서 이후 시험에서 역전되면 경우의 수를 차감해나가는 방식입니다. (중복 방지를 위해 break로 for문을 빠져나가도록 했습니다.) 귀찮으시겠지만 코드보시고 어떠한지 피드백 해주시면 정말 감사하겠습니다 :)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존<html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(m, arr){ let answer=0; for(let i=0; i<arr.length; i++){ let sum=0; let j=i; while(sum<=m){ sum += arr[j++]; if(sum == m) answer++; } } return answer; } let a=[1, 6, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a)); </script> </body> </html> 이렇게 짰는데 좋은코드인가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도
문제를 풀긴 했는데 시간복잡도가 좋은지 모르겠습니다 ㅜㅜ시간복잡도와 반례가 있으면 알려주시면 감사하겠습니다 function solution(m, arr) { let answer = 0; let p1 = 0; let p2 = 1; while (p1 < arr.length) { if (arr[p1] === m) { p1 += 1; p2 += 1; answer += 1; } else { let sum = 0; for (let i = p2; i >= p1; i--) { sum += arr[i]; } if (sum === m) { answer += 1; p1 += 1; p2 = p1 + 1; } else if (sum < m) { p2 += 1; } else { p1 += 1; p2 = p1 + 1; } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 문제점을 모르겠습니다
안녕하세요. for문과 while문을 사용하여 풀었는데, 오답이 나옵니다. 대체 어느 부분이 틀린질 모르겠습니다. 도움 부탁드립니다 ㅜㅜ <script> function solution(m, arr){ let sum = answer = 0; let plus = 1; for(let i = 0; i < arr.length; i ++){ sum = arr[i]; while(sum <= m && (i+plus)<arr.length){ sum += arr[i + plus++]; if(m === sum){ answer =+ 1; } } sum = 0; } return answer; } let a=[1, 2, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a)); </script>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님! 코드리뷰 부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이렇게 풀어도 문제가 되진 않을까요? const arr =[[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]]; const N = arr.length; // 학생수 const M = 28; // 예산. let answer = Number.MIN_SAFE_INTEGER; for (let i = 0; i < N; i++) { const half = (arr[i][0] / 2) + arr[i][1]; let buget = M - half; let cnt = 1; let temp = []; for (let k = 0; k < N; k++) { if(i == k) continue; const elem = arr[k][0] + arr[k][1]; temp.push(elem); } temp.sort((a,b) => a - b); for (let j = 0; j < temp.length; j++) { const minus = buget - temp[j]; if(minus < 0) break; buget = minus; cnt++; } if(answer < cnt) answer = cnt; } console.log(answer);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
에라토스테네스의 체 를 사용해서 풀었는데 문제되는 부분이 있을까요?
function psearch(n) { let p = 1; while (p * p <= n) { p += 1; } return p; } function solution(num) { let answer = []; for (let i = 0; i < num.length; i++) { let now = parseInt(num[i].toString().split("").reverse().join("")); if (now === 2) { answer.push(now); } else if (now === 1) { continue; } else { let p = psearch(now); let val = 0; for (let j = 2; j <= p; j++) { if (now % j === 0) { val += 1; } } if (val === 0) { answer.push(now); } } } return answer; } let arr = [32, 55, 62, 20, 250, 370, 200, 30, 100, 5, 7, 6]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if(L===n && sum === f) 질문
L=== n 이지만 sum !=== f인경우를 따로 처리하지않아도 되는게 밑에 f문을 돌떄 ch배열에의해 걸러져서 따로 처리를 하지 않은건가요!!?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sum 초기화하는 위치
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 function solution(arr) { let answer = ''; let sum = 0; let max = 0; for (let num of arr) { let tmp = num; while (tmp) { sum += tmp % 10; tmp = Math.floor(tmp / 10); } if (sum > max) { max = sum; answer = num; } else if (sum === max) { if (num > answer) answer = num; } sum = 0; } return answer; } 저는 for 문 바깥에 sum을 선언하고 for문이 끝날때마다 sum=0 으로 초기화시켰는데 강사님처럼 for문 내부에 sum을 선언하는게 더 효율적인 코드인가요>?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
조합 최적화 방법이 있을까요?
안녕하세요 강사님 좋은 강의 항상 감사드립니다! 강의를 듣고 알고리즘 연습 문제 중에 조합 문제가 나와 이번강의를 참고하게 되었는데요. 문제는 시간이 너무 많이 걸려서 시간초과 에러가 발생하게 됩니다.. 예를들어 "ABCDE" 문자열 중 4개를 뽑았을 때 발생하는 모든 경우를 먼저 구해야 하는 과정이 있는데, 입력으로 받는 문자열의 길이가 길면 시간이 기하급수적으로 증가해버리게 됩니다. 이전 강의 조합수 (메모이제이션) 처럼 조합을 구할때도 시간을 단축시킬 방법이 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for 문 안에 indexOf를 쓰면 시간복잡도가 어떻게 될까요?
// 가장 짧은 문자거리 function solution(str, al) { const answer = []; let prev = str.indexOf(al); for (let i = 0; i < str.length; i++) { let next = str.indexOf(al, i); let space_l = Math.abs(i - prev); let space_r = Math.abs(i - next); if (space_l > space_r) { prev = next; } answer.push(Math.min(space_l, space_r)); } return answer.join(' '); } console.log(solution('teachermode', 'e')); 저는 이렇게 코드를 작성했습니다., for 문을 돌면서 i 번째 이후에 있는 'e'의 인덱스 값을 찾아서 비교하는 방식으로 코드를 작성했는데 이경우는 시간복잡도가 O(n) 일까요 O(n^2)일까요? 그리고 혹시 코드 반례가 있을지 확인해주시면 감사드리겠습니다!!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 질문입니다.
for 문을 배열의 1번째 부터 시작하고 바로 앞사람하고 비교해서 크면 추가해도 맞는건가요? 예를 들면 이런 코드입니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀다보니 스택없이 풀었습니다.
강의 보기전에 풀어봤는데 이렇게 풀어도 문제가 없을까요? <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(s){ let answer = 0; let cnt = 0; for(let i = 0; i < s.length; i++){ if(s[i] === ")"){ // 닫는 괄호 cnt--; if(s[i-1] === "("){ // 레이저인 경우 answer += cnt; } else{ // 레이저가 아닌 경우 answer += 1; } } else{ //여는 괄호 cnt++; } } return answer; } let a="(((()(()()))(())()))(()())"; console.log(solution(a)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 강사님
이직을 위해 독학으로 알고리즘을 공부하고있는 직장인입니다 프론트엔드취직이 목표입니다. 강의 문제를 3번씩 다풀고 다른 문제를 풀려고 계획 중입니다 제가 궁금한것은 프로그래머스 레벨1부터 풀려고 하는데 문제는 이해는 하지만 정답이 정확하게나오질않아요. 정답을 못맞춰도 계속 새로운 문제를 풀어나가는게 맞을까요, 아니면 김태원강사님 강의를 완벽하게암기할때까지 복습하는게맞을까요? 알고리즘 공부방향을 어떻게 잡아야할지 막막합니다. (문제는 자바스크립트로풀고있습니다.) 조언 주시면 정말 감사할거같아요ㅠㅠ
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강의 코드에 넣었을때 답이 잘못나오는 것 같은데요 확인부탁드립니다~
선생님~ 테스트 케이스로 강의 내용 중 손 코딩으로 진행하셨던 [ [3, 4, 0, 0, 0], [5, 2, 2, 0, 0], [1, 4, 5, 1, 0], [3, 4, 0, 0, 0], [1, 2, 1, 3, 0],] [1, 5, 3, 5, 1, 2, 1, 4] 값을 넣어보니까 4가 아닌 2가 나오는데요, 확인부탁드립니다. 코드는 강의 내용과 동일하게 해서 테스트해봤습니다 function solution2(board, moves) { let answer = 0; let stack = []; moves.forEach((pos) => { for (let i = 0; i < board.length; i++) { if (board[i][pos - 1] !== 0) { let tmp = board[i][pos - 1]; board[i][pos - 1] = 0; if (tmp === stack[stack.length - 1]) { stack.pop(); answer += 2; } else stack.push(tmp); break; } } }); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
중괄호 생략하지 않는게 좋지 않나요?
if(a>b) max=a 같은 경우에 중괄호를 생략할 수 있다고 알긴하는데 굳이 생략을 해서 얻는 이점이 있나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce, foreach 메서드로 풀어도 되나요
안녕하세요 강사님. 저는 이번 풀이에서 forEach로 홀수 배열을 만들고 reduce로 합을, sort로 최솟값을 구했는데 이렇게 푸는 것과 for문으로 푸는 것의 차이가 궁금합니다. 메서드를 많이 쓰면 그만큼 효율이 떨어질까요? // 홀수 function solution(arr) { let odd = []; let sum_odd = 0; let min_odd = 0; arr.forEach((num) => { if (num % 2 === 1) { odd.push(num); } }); sum_odd = odd.reduce((a, b) => a + b); min_odd = odd.sort((a, b) => a - b)[0]; return `${sum_odd} ${min_odd}`; } console.log(solution([12, 77, 38, 41, 53, 92, 85])); // 256 41
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 해도 괜찮나요?
const isItTriangle = (A, B, C) => { // Step 1: Construct a function that takes three arguments // Step 2: Compare the sum of two values to one arg // Step 3: If the sum is greater than the one arg, return true otherwise false if (A + B > C && A + C > B && B + C > A) { return 'YES'; } else { return 'NO'; } } console.log('Case 1: ' + isItTriangle(6, 7, 11)); console.log('Case 2: ' + isItTriangle(13, 33, 17)); const answer2 = document.querySelector('#q3'); answer2.append(isItTriangle);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 하면 time & space BigO 가 더 괜찮을거 같은데요
function isItTriangle(A, B, C) { // Step 1: Construct a function that takes three arguments // Step 2: Compare the sum of two values to one arg // Step 3: If the sum is greater than the one arg, return true otherwise false if (A + B > C && A + C > B && B + C > A) { return 'YES'; } else { return 'NO'; } } console.log('Case 1: ' + isItTriangle(6, 7, 11)); console.log('Case 2: ' + isItTriangle(13, 33, 17)); const answer2 = document.querySelector('#q3'); answer2.append(isItTriangle);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 리뷰 부탁드립니다.
72시간을 기준으로 다음과 같이 작성해봤는데, 문제가 있을까요?? const solution = (...arr) => { const sch = [...arr].sort((a, b) => (a[0] === b[0] ? a[1] - b[1] : a[0] - b[0])); let ing = []; let idx = 0; let res = 0; for (let i = 0; i <= 72; i++) { if (idx >= sch.length) break; if (sch[idx][0] === i) { ing.push(sch[idx]); idx++; } ing = ing.filter(([s, e]) => e !== i); res = res > ing.length ? res : ing.length; } return res; };
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 이해를 잘 못하겠습니다.
안녕하세요. 문제에서는 알파벳 이외의 문자들은 다 무시한다고 돼 있는데, 여기에서 말하는 문자엔 숫자가 포함된 건가요? 정규표현식부분이 조금 헷갈려서요. 전 처음에 ,:;이 세 가지만 제외하면 되는 줄 알았거든요.