월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런식으로 풀이 해도 괜찮을까요?
function solution(arr) { let answer = []; const odd = arr.filter(v => v % 2); answer.push(odd.reduce((acc,cur) => acc+cur)); answer.push(Math.min(...odd)); return answer; } let arr = [12, 77, 38, 41, 53, 92, 85]; console.log(solution(arr)); 배열 메서드를 사용하지 않고 푸는 방법도 같이 공부해야될까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
isNaN()대신 parseInt()를 써도 되나요?
안녕하세요 선생님! 저는 아래처럼 숫자인지 아닌지 판별할 때 parseInt(x)를 써서 숫자로 변환이 되면 숫자인 것으로 판단했는데요, 이렇게 해도 다른 케이스에서도 문제가 없을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
반례가 있는지 궁금합니다!
function solution(arr) { let answer = []; let i; let j; // 짝궁찾기 for (i = arr.length - 1; i > 0; i--) { if (arr[i - 1] > arr[i]) break; } // 현수 찾기 for (j = 0; j < arr.length; j++) { if (arr[j] > arr[i]) break; } answer.push(j + 1); answer.push(i + 1); return answer; } let arr = [122, 123, 125, 125, 128, 161, 167, 167, 167, 161, 170]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if문 질문
선생님 혹시 else 안에 if를 넣는 이유를 알 수 있을까요?? else{ answer += s[i]; if(cnt>1){ answer += String(cnt); cnt = 1; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
4번 코드리뷰 부탁드립니다!
안녕하세요! 저는 4번 코드를 제 나름대로 작성해봤는데 계속 콘솔에서 결과값이 0이 나와서요 ㅜㅜ 제 기준에서는 잘못된 부분이 없다고 생각이 들었는데, 어떤 부분에서 잘못된건지 피드백 해주시면 감사하겠습니다 :) <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> var input=prompt('자연수 하나를 입력하세요'); var sum=0; document.write(input); if(input<=20){ for(var i=0;i<input.length;i++){ sum+=i; } console.log(sum); } else { //console.log("20 이하의 자연수를 입력해주세요!"); } </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Array.from vs Array
안녕하세요.. 강사님 문득 궁금한점이 있어서 질문을 남깁니다.. 보통 고정적인 배열을 생성하실때 Array.from을 많이 사용하시는데 저는 Array().fill 이 조금 더 읽기 쉬운 코드라 생각하여 작성하고 있었습니다. 그러다 문득 궁금한게 고정된 배열을 생성하는 두 가지 방법의 시간 복잡도가 궁금해 졌습니다. Array.from({length:n}, () => 0) 의 경우 배열을 생성하면서 값을 채워 넣기에 O(n) 의 시간 복잡도를 갖고Array(n).fill(0) 의 경우 배열을 생성후 다시 순회하며 값을 채워 넣기에 O(n) + O(n) 의 시간 복잡도를 갖는다고 생각 했습니다. 1. 위에 제가 생각한 시간 복잡도가 맞을까요~?2. Array(n) 에 대한 시간 복잡도가 O(1) 이다 와 O(n) 이라는 의견이 존재하는데 어떻게 생각하시나요~? 만약 O(1) 의 복잡도이면 1번의 답이 어떻게 될까요? 읽어주셔서 감사합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
제가 푼 코드는 for문에 while문이 하나 들어가있는데 선생님께서 풀어주신 코드보다 시간복잡도가 높은건가요? 괜찮은 코드인지 리뷰 부탁드리겠습니다 :) function solution(board, moves) { let answer = 0; let stack = []; for (let x of moves) { let i = 0; while (board[i][x - 1] === 0 && i < board.length - 1) i++; let doll = board[i][x - 1]; if (doll !== 0) { if (doll === stack[stack.length - 1]) { stack.pop(); answer += 2; } else stack.push(doll); board[i][x - 1] = 0; } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 코드 리뷰 부탁드립니다!
강의 듣기에 앞서 지난 시간 선생님께 배운 슬라이딩 윈도우로 풀어봤습니다. 어떠한지 리뷰 부탁드리겠습니다 :) function compareMaps(map1, map2){ for(let [key, val] of map1){ if(map1.get(key)!==map2.get(key)) return 0; } return 1; } function solution(s, t){ let answer = 0; let sL = s.length, tL = t.length; let tH = new Map(), sH = new Map(); for(let x of b){ if(tH.has(x)) tH.set(x, tH.get(x)+1); else tH.set(x, 1); } for(let i=0;i<tL;i++){ let x = s[i]; if(sH.has(x)) sH.set(x, sH.get(x)+1); else sH.set(x, 1); } answer += compareMaps(tH, sH); for(let i=tL;i<sL;i++){ let x = s[i], y = s[i-tL]; if(sH.has(x)) sH.set(x, sH.get(x)+1); else sH.set(x, 1); sH.set(y, sH.get(y)-1); answer += compareMaps(tH, sH); } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 풀이 마구간정하기
function solution(target,array){ array.sort((a,b)=>a-b); let left = 1; let right = array[array.length-1]; let answer while(left<=right){ let mid = Math.floor((left+right)/2); let cnt = 1; let start = array[0]; let result =[] for(let i=1; i<array.length; i++ ){ let between =array[i]- start; if(mid<=between){ cnt++; result.push(between) start = array[i]; } } if(target === cnt){ answer = Math.min(...result); break }else if(target<cnt){ left = mid +1; }else{ right = mid -1; } } return answer; } 이런식으로 풀어도 괜찮을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 코드 리뷰 부탁드립니다 :)
하루하루 선생님 강의 들으며 공부하고 있습니다. 강의 듣기 전에 문제 읽고 먼저 코드를 짜보는데 항상 부족함을 느끼네요. 이번 문제 코드는 괜찮은지 리뷰 부탁드립니다 :) function solution(k, arr){ let answer = rt = sum = 0; let n = arr.length; for(let lt=0;lt<n-k+1;lt++){ while(rt-lt<k){ sum+=arr[rt++]; } answer = Math.max(answer, sum); sum -= arr[lt]; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
3번 연필 개수 코드 리뷰 부탁드립니다
안녕하세요! 제가 연필 개수를 나름대로 풀어보았는데 콘솔창에서 테스트를 하면 같은 값만 리턴됩니다(ex 48을 입력하면 48이 그대로 리턴됩니다) 코드에는 큰 문제가 없어보이는데, 어떤 것이 잘못되었는지 피드백 주시면 감사하겠습니다! <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> function solution(student,doz){ var student=prompt('학생 수를 입력하세요') var doz; if(student%12==0){ doz=student%12; return doz; } else { return doz+1; } } </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요! 코드 리뷰 부탁드립니다.
감사합니다 :) function solution(m, arr) { let answer = 0; let n = arr.length let p1 = 0; let p2 = p1 + 1; let sum = arr[0]; if(n===1){ if(sum===m) { answer++; return answer; } } while (p2 < n) { sum += arr[p2]; if (sum === m || sum-arr[p2]===m) { answer++; p1++; p2 = p1 + 1; sum = arr[p1]; } else { if (sum < m) p2++; else { p1++; p2 = p1 + 1; sum = arr[p1]; } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 코드 리뷰 부탁드립니다!
강사님과 다르게 indexOf를 이용해서 코드를 짜봤습니다. 다른분들께 답변하신 케이스들 적용해보았는데 반례는 없었습니다. 반례가 있을지, 코드는 어떠한지 리뷰 부탁드리겠습니다 :) function solution(n, k, card){ let answer = []; let sum; for(let i=0;i<n-2;i++){ for(let j=i+1;j<n-1;j++){ for(let k=j+1;k<n;k++){ sum = card[i] + card[j] + card[k]; if(answer.indexOf(sum)===-1 || answer.length === 0){ answer.push(sum); } } } } answer.sort((a,b)=>b-a); return answer[k-1]; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
board[nx][ny] 질문
nx,ny로 board를 참조할떄 board[nx][ny] 로 참조를하게되면 nx가 x좌표가아닌 y좌표로 참조가되는샘아닌가요?? 작동하는데는 문제가없긴한데 단순히 가독성을 고려해서 nx,ny순으로 작성하신건지요!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 풀이 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강사님 강의 잘듣고 있습니다. 제가 혼자 풀어볼 때 x - day하면 10의 배수가 나오기 때문에 2로 나누었을 때 나머지가 0이다. 이런 로직을 적용해봤습니다. 근데 답이 제대로 리턴되지 않습니다. 어떤 문제가 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 푼 방식은 어떤가요?
function solution(str1, str2) { let obj1 = {}; let obj2 = {}; for (let i = 0; i < str1.length; i++) { if (!obj1[str1[i]]) { obj1[str1[i]] = 1; } else { obj1[str1[i]]++; } } for (let i = 0; i < str2.length; i++) { if (!obj2[str2[i]]) { obj2[str2[i]] = 1; } else { obj2[str2[i]]++; } } for (let key in obj1) { if (obj1[key] !== obj2[key]) return 'No'; } return 'YES'; } let a = 'abaCC'; let b = 'Caaab'; console.log(solution(a, b)); 이렇게 풀면 안좋은 점이 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문드립니다.
저는 하나의 배열에 추가하고 그 배열로 최대값을 구하는 로직을 사용했는데, 혹시 배열에 추가하는 과정이 코스트가 큰 로직일까요 ? 어떤식으로 하는게 가장 효율적이고 깔끔한 코드인지 궁금합니다. let sumDiag_1 = sumDiag_2 = 0; // 대각선 합 let resultArr = [0, 0, 0, 0]; // 0 : 가로합 , 1: 세로합 , 2/3 : 대각선 합 for (let i = 0; i < arr.length; i++) { let row = col = 0; // 각 row,col의 합계를 구하는 반복문 for (let j = 0; j < arr.length; j++) { row += arr[i][j]; col += arr[j][i]; } // 최대값을 resultArr에 할당 if (resultArr[0] < row) { resultArr[0] = row } if (resultArr[1] < col) { resultArr[1] = col; } // 대각선의 합을 구함 sumDiag_1 += arr[i][i]; sumDiag_2 += arr[i][(arr.length - 1) - i]; } resultArr[2] = sumDiag_1; resultArr[3] = sumDiag_2; // 최대값 출력 return Math.max(...resultArr)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
인접행렬 vs 인접 리스트 질문
그러면 혹시 인접 행렬로 풀었을떄의 장점이 있을까요? 아니면 그냥 인접리스트로 풀어도 상관없나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
괜찮게 푼건지 궁금합니다ㅠㅠ!
function solution(times) { let result = Number.MIN_SAFE_INTEGER; let temp = []; times.sort((a, b) => a[0] - b[0] || a[1] - b[1]); for (let time of times) { const [start, end] = time; temp.push(end); if (temp.length) { temp = temp.filter((el) => el > start); } result = Math.max(result, temp.length); } return result; } 강의 시청 전에 이건 개인적으로 푼건데 반례나 효율성에 괜찮은지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요! 이 방식으로 해도 괜찮을까요?
function solution(s){ let stack = [] let leng = stack.length for (i=0; i<s.length; i++){ stack.push(s[i]) if (stack[leng-2]+stack[leng-1] === '()'){ stack.pop() stack.pop() } } if (leng === 0){ return 'YES' } else { return 'NO' } } let a="(()(()))(()()()))("; console.log(solution(a));