월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
저는 함수형 반복문으로 풀었는데요..
직전 강의 듣고, 혹시 map으로 풀어야하는지? 문득 생각이들어 이렇게 풀었는데 성능 상 제약이 있을까요?(+ 문자열도 순회가 되는지 처음 알았습니다..항상 배열로 변환 후 풀었는데..감사합니다!) /** * @desc problem : A를 #으로 * @desc site : Olympiad * @desc level: 1 */ /** * solution * @param {string} str */ function solution(str) { const strToArr = str.toUpperCase().split(''); const target = 'A'; return strToArr .map(function (item, index) { return item === target ? '#' : item; }) .join(''); } const answer = solution('BANANA'); console.log(answer); //B#N#N#
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
엣지케이스가 맞는지 확인 부탁드려요.
안녕하세요. 선생님, 강의 잘 듣고 있습니다! 다른 케이스를 적용했을 때 정답이 제대로 나오는 것 같지 않아서 질문을 드립니다. solution(15, [1, 4, 6]); 위와 같이 작성할 경우, 총 금액 15원에서 6원 2개 = 12원 1원 3개 = 3원 총 15원이 되려면 6원 2개, 1원 3개 => 5개가 정답이 나와야하는데 정답이 4로 나오네요. 확인 부탁드리겠습니다~
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문) tmp 대신에 tmp.slice()를 사용하는 이유
안녕하세요 선생님! 강의를 여러번 들어도 L===m이라는 조건이 완성될 때 tmp대신 tmp.slice()를 사용하는 이유에 대해서 정확하게 이해하지 못했습니다 ㅜㅜ 제가 이해한 바로는 tmp만 작성할 경우 최종 tmp에 작성 된 값이 앞에 answer에 할당되었던 tmp 배열들의 값을 덮어쓰기 때문에 모든 배열이 [3,3]이 나오는 것이라고 이해했는데, 이게 맞나요..?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 방식으로 풀어봤습니다!
안녕하세요! 수업 잘듣고있습니다 :) 이번 문제를 혼자 풀어보았는데 괜찮은 코드인지 궁금하여 질문 남깁니다. 항상 감사합니다!^^ function compareMaps(tmp, sH) { let sH1 = new Map(); for (let [key, val] of sH) { sH1.set(key, val); } for (let x of tmp) { if (!sH1.has(x) || sH1.get(x) === 0) return 0; sH1.set(x, sH1.get(x) - 1); } return 1; } function solution(s, t) { let answer = 0; sH = new Map(); let len = t.length; let tmp = s.slice(0, len); for (let x of t) { if (sH.has(x)) sH.set(x, sH.get(x) + 1); else sH.set(x, 1); } if (compareMaps(tmp, sH)) answer++; for (let i = len; i < s.length; i++) { tmp = tmp.slice(1); tmp = tmp + s[i]; if (compareMaps(tmp, sH)) answer++; } return answer; } let a = 'bacaAacba'; let b = 'abc'; console.log(solution(a, b));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 풀이 괜찮을 까요?
function solution(m, arr) { let [left, right] = [0, 1]; let sum = arr[left]; let result = 0; while (right <= arr.length) { if (sum < m) { sum += arr[right++]; } else if (sum > m) { sum -= arr[left++]; } else { sum -= arr[left++]; result++; } } return result; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강의 수강시작인데 혹시 완전탐색 이후부터
완전탐색이나 dfs,bfs내용에 백트래킹같은것도 강의내용에 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런식으로 풀었는데..괜찮을까요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! function solution(a, b, c) { if (a + b < c) { console.log('No') } else if (a + c < b) { console.log('NO') } else if (c + b < a) { console.log('NO') } else { console.log('YES') } } console.log(solution(6, 13, 20)); console.log(solution(33, 40, 6)); 이렇게 풀면 좀 방식이 이상한가요..? 일단 이렇게 했는데 비교해보니 좀달라서..
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도될까요... 너무복잡해보이긴하네요 ㅠ
function solution(arr){ let answer = 0; for (let i = 0; i < arr.length; i++) { if (arr[i] === 0) { answer += 0; } else if (arr[i] === 1) { answer += 1; for (let k = i + 1; k < arr.length; k++) { if (arr[k] === 1) { answer += 1; } else { answer += 0; break; } } } } return answer; } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님 풀이 리뷰 부탁드립니다.
sum이 주어진 값(m)을 초과하였을 때 sum에서 lt(제 코드에서는 start) 인덱스 값을 빼주는 것이 아니라 포인터와 sum을 초기화하면서 진행하였는데 이런 코드는 효율성이 떨어질까요? 또한 제 코드에 대한 반례가 있는지도 궁금합니다. <script> function solution(m, arr) { let answer = 0; let start = end = 0; let sum = 0; while (start < arr.length) { while (end < arr.length && sum < m) { sum += arr[end++]; } if (sum === m) { answer++; } start++; end = start; sum = 0; } return answer; } let a = [1, 2, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a)); </script>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 안녕하세요 질문이 있습니다!
우선 강의 잘 듣고 있습니다. 감사합니다 ^^ 다름이 아니라 answer = s.substring(s.length / 2, s.length / 2 + 1) 이렇게 내림을 안해줘도 답이 나오는데 이건 잘못된 건가요? 만약 s.length가 5라면, 2.5인덱스부터 3.5인덱스 까지인데.. 답은 잘 나오더라구요? 시작index가 2를 초과했는데.. 다른 문자열로 작성해봐도 답이 나오긴하는데..... substing()의 시작(끝) index가 자동으로 내림을 해주는건지... 아니면 꼭 Math.floor로 정수 반환을 해줘야 하는건지 궁금하네요 ㅎㅎ 시간 되실 때 답변주시면 감사하겠습니다 ^^
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강의 듣기 전 풀이인데 혹시 문제가 있을까요?? 좋은 강의 감사합니다!
function solution(c, s) { let answer = "YES"; let orderList = []; // 순서를 담는 배열 for (let i = 0; i < c.length; i++) { orderList.push(s.indexOf(c[i])); } // 만약 필수과목 중 안들은 과목이 있다면 return NO if (orderList.includes(-1)) return "NO"; // 이수 순서 비교 for (let i = 0; i < orderList.length - 1; i++) { if (orderList[i] > orderList[i + 1]) return "NO"; } return answer; } let compulsorySubject = "CBA"; let selectClass = "CBDAGE"; console.log(solution(compulsorySubject, selectClass));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제 질문 있습니다!
해당 문제를 정답 코드(DFS)로 풀게 되면 밑에 질문의 답변에서 봤는데 시간 복잡도는 O(2^N) 인가요?? 그럼 이중for문을 사용하면 시간 복잡도는 O(n^2) 으로 알고 있는데 두 갈래로 뻗어가는 나중에 이런 문제는 이중for문을 사용하는 게 그럼 더 나은 방식인 건가요? 예시 코드입니다 function solution(c, arr) { let answer = Number.MIN_SAFE_INTEGER; const n = arr.length; for (let i = 0; i < n; i++) { let sum = 0; for (let j = 0; j < n; j++) { if (i === j) continue; sum += arr[j]; } if (sum <= c) { answer = Math.max(answer, sum); } } return answer; } let arr = [81, 58, 42, 33, 61]; console.log(solution(259, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
위와 같이 풀면 안될까요 ??
function solution(m, product) { let answer = 0; const arr = []; product.forEach((item, i) => { let total = item[0] + item[1]; let total2 = item[0] / 2 + item[1]; arr[i] = [total, total2]; }); arr.sort((a, b) => a[0] - b[0]); arr.forEach(item => { if (m < item[0] && m >= item[1]) { m = m - item[1]; answer++; console.log(m); return; } if (m < item[0] && m < item[1]) return; m = m - item[0]; console.log(m); answer++; }); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
여러분 Math.min 써도 된다고 합니다~!
.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시 반대로 중복된 것만 나타나게 하려면 어떻게 해야할까요?
중복된것만 나타내는데 중복되는 영문자가 더 많은것을 우선으로 추출하는 경우는 어떻게 코딩해야할까요? 비슷하게 코딩해보려고하는데 자꾸 원하는 결과가 안나오네요 ㅠㅠ
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요! 이렇게 한번 풀어봤는데 안좋은 코드인가요??
function solution(test) { let answer = []; for (let i = 0; i < test.length; i++) { for (let j = 0; j < test[i].length - 1; j++) { for (let k = j + 1; k < test[i].length; k++) { if (answer.includes(`${test[i][j]},${test[i][k]}`)) continue; if (answer.includes(`${test[i][k]},${test[i][j]}`)) { answer.splice(answer.indexOf(`${test[i][k]},${test[i][j]}`), 1); continue; } if (i !== 0) continue; answer.push(`${test[i][j]},${test[i][k]}`); } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
테스트 코드
안녕하세요 선생님 강의 잘 보고 있습니다. 혹시 문제마다 테스트 코드를 더 추가해 주실 수 있나요? 문제를 맞아도 케이스가 1개 밖에 없어서 찝찝하네요... (다른 사이트에서 예시로 나온 케이스로 돌리면 맞는데 채점하면 틀린 경우가 많아서...) 나중에라도 테스트 케이스 추가 부탁드립니다! 감사합니다.
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 중 질문 있습니다.
let pos=-1; for(let i=0; i<size; i++) if(x===answer[i]) pos=i; 이 부분 indexOf 내장함수 사용해도 괜찮은 걸까요? const pos = answer.indexOf(x) 이런식으로요 동일한 기능을 하는 것 같은데 내장함수를 사용해도 괜찮은지 질문드립니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 o(n)으로 한번 풀어봤습니다. 이런식으로 풀어도 될까요??
function solution(n, arr) { let answer = Number.MIN_SAFE_INTEGER; let max = Number.MIN_SAFE_INTEGER; arr.forEach((item, i) => { let sum = Math.floor(item / 100) + Math.floor((item % 100) / 10) + (item % 10); if (max <= sum) { max = sum; if (answer < item) answer = item; } }); return answer; } let arr = [128, 460, 603, 40, 521, 137, 123]; console.log(solution(7, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
문제에서
원소 사이의 증가 폭이 커야 한단 의미가 아니라 점점 증가하는 원소들의 집합 중 길이가 가장 긴 것을 찾는다는 의미인 것인가요? 원소들 사이 사이의 증가 폭은 고려할 필요가 없나요?