월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 방식은 어떤가요?
function solution(arr = [87, 89, 92, 100, 76]) { const arr_ = arr.map((i) => arr.filter((j) => i < j).length + 1); console.log(arr_); } map과 filter를 이용해봤습니다. for문 2번 돌리는 것과 똑같긴하네요
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 코드가 맞는지 모르겠습니다.
안녕하세요 선생님 강의 잘듣고있습니다. 저는 이렇게 이중포문으로 돌아봤는데 이게 맞는 코드인지를 모르겠습니다. 열심히 듣겠습니다! function solution(times) { let answer = 0; let endpoint = 0; const _t = [...times.map((el) => el.slice())]; _t.sort((a, b) => { if (a[0] === b[0]) { return a[1] - b[1]; } else return a[0] - b[0]; }); _t.forEach((el, index) => { let count = 0; if (index === 0) endpoint = el[1]; for (let i = index; i < _t.length; i++) { if (endpoint > _t[i][0]) count++; else { if (count > answer) answer = count; break; } } }); return answer; } let arr = [ [14, 18], [12, 15], [15, 20], [20, 30], [5, 14], ]; console.log(solution(arr));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 질문있습니다!
첫번째 while문에서 && 연산자를 활용해서 종료되고 그 다음 코드에서 while문 두개를 작성하지 않고 첫번째 while문에서 ||연산자를 사용해서 그냥 하나의 while문으로 작성해도 되는 건가요? 효율성에 차이가 있는 건지 궁금합니다. function solution(arr1, arr2) { let answer = []; const n = arr1.length; const m = arr2.length; let p1 = 0; let p2 = 0; while (p1 < n || p2 < m) { if (arr1[p1] < arr2[p2]) { answer.push(arr1[p1++]); } else { answer.push(arr2[p2++]); } } return answer; } let a = [1, 3, 4, 5, 7, 8, 10]; let b = [2, 3, 6, 7, 9, 10, 11]; console.log(solution(a, b));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
등수 관련 질문드립니다.
만약 등수가 92, 92, 92, 100, 76 으로 주어졌을 때, 각 사람의 등수를 2, 2, 2, 1, 5 등이 아니라 2, 2, 2, 1, 3 등으로 구하고 싶다면 코드를 어떻게 짜는게 좋을까요,,
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
리뷰 부탁드립니다.
안녕하세요. 1차원 배열로 만들어서 O(n)이 되도록 풀어봤는데 테스트 케이스가 없어서 답이 정확한지 확신이 가질 않습니다. 로직에 오류가 없는지 한번 확인해주시면 감사하겠습니다. function solution(n, arr) { let count = 0; for (let i = 0; i < arr.length; i++) { let top = arr[i - n] ? arr[i - n] : 0; let left = arr[i - 1] ? arr[i - 1] : 0 let right = arr[i + 1] ? arr[i + 1] : 0 let bottom = arr[i + n] ? arr[i + n] : 0 // 배열의 양 끝인 경우 if (i % (n) === n - 1) right = 0; if (i % (n) === 0) left = 0; if (arr[i] > Math.max(top, left, right, bottom)) count++ } return count } console.log(solution(5, [5, 3, 7, 2, 3, 3, 7, 1, 6, 1, 7, 2, 5, 3, 4, 4, 3, 6, 4, 1, 8, 7, 3, 5, 2])) console.log(solution(4, [9, 3, 7, 4, 2, 4, 3, 3, 1, 8, 2, 7])) console.log(solution(3, [1, 1, 1, 1, 1, 1, 1, 1, 1]))
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 질문드립니다.
x가 닫는 괄호 일 경우, pop()을 빈 괄호로 두는 건, stack에는 있는 열린 괄호만 있기 때문인가요? 혹시 stack.pop(x)로 둬도 답은 똑같이 나오던데, 틀린지요? 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if문 2번 사용한 부분에 대해서 질문드립니다!
안녕하세요 선생님! 초보수강생입니다 ^_^ if문에 대해서 공부할 때, if문과 else문은 2번 이상 사용할 수 없지만 else if문은 여러번 사용할 수 있다고 책에서 보았었는데요! 본 강의에서 if문이 두번 사용되어서 궁금증이 들어 질문하게 되었습니다.if,else 모두 필요에 따라 여러번 사용해도 되는건가요? 또 중괄호는 원한다면 생략해도 되는건가요? 저는 이렇게 짜보았습니다. function solution(a, b, c) { let answer; if (a < b && a < c) { answer = a; } else if (b < a && b < c) { answer = b; } else if (c < a && c < b) { answer = c; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 설정하면 안되는 이유
answer을 선언하고나서 가만히 냅두고 굳이 cnt라는 변수를 줘서 마지막에 math해주는 이유를 잘 모르겠어서 그냥 처음부터 answer에 ++하도록 해줬습니다. 근데 저렇게 설정해서 코드 돌리니까 에러가 뜨네요 아래 코드처럼 하면 안되는 이유가 뭔가요? <html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(m, product) { let n = product.length; product.sort((a, b) => a[0] + a[1] - (b[0] + b[1])); for (let i = 0; i < n; i++) { let money = m - (product[i][0] / 2 + product[i][1]); let answer = 1; for (let j = 0; j < n; j++) { if (j !== i && product[j][0] + product[j][1] > money) break; if (j !== i && product[j][0] + product[j][1] <= money) { money -= product[j][0] + product[j][1]; answer++; } } } return answer; } let arr = [ [6, 6], [2, 2], [4, 3], [4, 5], [10, 3], ]; console.log(solution(28, arr)); </script> </body> </html> 이용해주세요.
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
pos에 관한 질문 드립니다
pos 을 -1로 초기화하고, 추후에 -1이 맞는지 체크해주셨는데요. -1외의 숫자로 초기화해도 문제가 없는건지 문의드립니다. 다른 숫자들로 직접 대입했을때 문제는 없는 것 같지만 혹시 특정한 의도가 있을까 궁금하네요. 항상 좋은 강의에 감사드립니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
연산을 이용해서 풀어봤는데 괜찮을까요?
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(a, b) { let answer = []; for (let i = 0; i < a.length; i++) { if (a[i] === b[i]) answer.push('D'); else if (a[i] - b[i] === 1 || a[i] - b[i] === -2) answer.push('A'); else answer.push('B'); } return answer; } let a = [2, 3, 3, 1, 3]; let b = [1, 1, 2, 2, 3]; console.log(solution(a, b)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 코드리뷰를 부탁드립니다 :)
const solution = (data) => { let answer = Number.MIN_SAFE_INTEGER; let raw = column = diagonal = reDiagonal = 0; for(let i=0; i<data.length; i++) { raw = column = 0; diagonal += data[i][i]; reDiagonal += data[i][data.length-1-i]; for(let j=0; j<data.length; j++) { raw += data[i][j]; column += data[j][i]; } answer = Math.max(answer, raw, column); } answer = Math.max(answer, diagonal, reDiagonal); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 코드리뷰 부탁드립니다. 감사합니다!
function solution(k, arr) { let answer = 0; let n = arr.length; let max = Number.MIN_SAFE_INTEGER; let sum = 0; for (let i = 0; i < n; i++) { sum = arr[i] + arr[i + 1] + arr[i + 2]; if (sum > max) max = sum; answer = max; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이번 강의의 답은 기본적으로 모든 케이스에 적용되지 않는 것 같습니다.
function solution(arr) { let answer = arr; let sum = arr.reduce((a, b) => a + b, 0); for (let i = 0; i < 8; i++) { for (let j = i + 1; j < 9; j++) { if (sum - (answer[i] + answer[j]) === 100) { answer.splice(j, 1); answer.splice(i, 1); } } } return answer; } let arr = [20, 7, 23, 19, 10, 15, 28, 8, 13]; console.log(solution(arr)); // 이렇게 배열의 요소 중에서 25를 28로 바꾸면 // [ 7, 19, 10, 8, 13 ] 로 출력이 됩니다. // 이런 경우 sum - (answer[i] + answer[j]) === 100 // 라는 조건을 두 번 만족시켜서 그런 것 같습니다. function solution(arr) { let answer = arr; let sum = arr.reduce((a, b) => a + b, 0); endOfCircuit: for (let i = 0; i < 8; i++) { for (let j = i + 1; j < 9; j++) { if (sum - (answer[i] + answer[j]) === 100) { answer.splice(j, 1); answer.splice(i, 1); break endOfCircuit; } } } return answer; } let arr = [20, 7, 23, 19, 10, 15, 28, 8, 13]; console.log(solution(arr)); // [ 7, 19, 10, 15, 28, 8, 13] // 조건을 한번만 찾아도 종료시키는 // break문을 추가해야 올바른 정답이 아닌가 싶습니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 아래와 같은 코드는 어떤지 리뷰 부탁드립니다!
function solution(n, k, card) { let answer = []; let n = card.length; card.sort((a, b) => b - a); for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { for (let s = 0; s < n; s++) { if (j !== i && s !== i && s !== j) { answer.push(card[i] + card[j] + card[s]); break; } } } } return answer[k - 1]; } let arr = [13, 15, 34, 23, 45, 65, 33, 11, 26, 42]; console.log(solution(10, 3, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 새롭게 코드를 짜봤는데 혹시 반례가 있을까요?
function solution(arr) { let num1 = 0; let num2 = 0; for (let i = 0; i < arr.length-1; i++) { if (arr[i] >= arr[i + 1]) { num1 === 0 ? (num1 = i + 1) : (num2 = i + 2); } } return num1 + " " + num2; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
소수 찾는 함수
소수 찾는 함수 아래와 같이 만들었는데, 정답이 리턴되지 않습니다. 어느 부분에서 잘못되었는지 확인부탁드립니다. 감사합니다. function isPrime(num) { for (let i = 2; i <= num; i++) { if (num >= 2 && num % i !== 0) return true; } }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
DFS문제의 시간복잡도가 궁금합니다.
안녕하세요 선생님. 항상 질 좋은 강의 감사드립니다. 다름이 아니라 DFS문제를 이용한 문제들, 가령 바둑이 승차와 같은 문제는 시간복잡도가 어떻게 되는지 궁금합니다. 반복문으로 배열 전체를 탐색하는것이 아니므로 `O(N)` 이하가 나올것 같은데 맞는지 궁금합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
투포인터를 사용하지는 않았는데...
function solution(arr1, arr2) { let answer = []; let temp_obj = {}; const sum_arr = [...arr1, ...arr2]; for (let i = 0; i < sum_arr.length; i++) { temp_obj[sum_arr[i]] = temp_obj[sum_arr[i]] + 1 || 1; } for (let key in temp_obj) { if (temp_obj[key] === 2) { answer.push(Number(key)); } } return answer; } let a = [1, 3, 9, 5, 2]; let b = [3, 2, 5, 7, 8]; console.log(solution(a, b)); 위 처럼 풀었는데 전개연산자를 사용할경우 시간복잡도가 안나와있어서 위와같이 풀면 시간복잡도가 어떻게 되는지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 질문드립니다.
안녕하세요, isNaN 사용 대신 아래와 같이 구현해도 되나요? if (x >= 0 && x < Number.MAX_SAFE_INTEGER)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 질문드립니다.
공식을 입력하여 답은 도출하였습니다. 그런데 확인하기 위해 중간중간 console.log를 작성한 것들은 콘솔에서 구현이 안되더라구요. 공식과 같은데 왜 콘솔에서는 작동이 안되는지 확인 부탁드립니다. (커멘드 처리한 부분입니다) function solution(str) { let answer = "YES"; let s = str.toUpperCase().replace(/[^a-z]/g, ""); // console.log(s); if (s.split("").reverse().join("") !== s) return "NO"; // console.log(s.split("").reverse().join("")) return answer; } let str = "found7, time: study; Yduts; emit, 7Dnuof"; console.log(solution(str));