월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 질문드립니다.
아래와 같이 했을 경우, "YES"가 출력되기는 하는데요. 맞는 풀이인지 확인 부탁드립니다! function solution(str) { let answer = "NO"; let n = str.length; let s = str.toUpperCase(str); for (let i = 0; i < n; i++) { for (let j = n - 1 - i; j <= 0; j++) { if (s[i] === s[j]) answer = "YES"; } } return answer; } let str = "gooG"; console.log(solution(str));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 질문드립니다.
처음에 answer를 지정할 때, 배열이 짧다면, 아래와 같이 해도 될런지요? 혹 인터뷰에서 감정대상일까요? let answer = [1, 1, 1, 1, 1]; Array.from를 사용할 경우, 빈 괄호안에 x를 넣는 것과, 넣지 않는 것의 차이는 무엇인가요? let answer = Array.from({ length: 5 }, (x) => 1);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Level로 최단 거리를 찾는 문제에서 let len = queue.length;
강사님이 제공한 소스코드 중에서 Level로 최단거리를 찾는 부분에서 let len = queue.length;을 작성하지 않고 for문을 돌면 정답이 안되는 이유가 무엇인가요. for (let i = 0; i < queue.length; i++) {...}으로 소스 코드를 작성하면 틀린 정답이라고 나오네요...
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님 코딩테스트관련해서 질문있습니다
안녕하세요 문제풀다가 문득 궁금한게있어서 질문드립니다 저는 이문제를 function solution(a) { let answer = []; let b = a.split(""); for (let i in b) { if (b[i] === b[i].toUpperCase()) { b[i] = b[i].toLowerCase(); answer.push(b[i]); } else { b[i] = b[i].toUpperCase(); answer.push(b[i]); } } let c = answer.join(""); return c; } console.log(solution("StuDY")); 이렇게 문자열을 배열로 바꾸는식으로 해서 풀었는데요 지금까지 선생님은 전부 문자열을 이용해서 푸시더라구요 저는 배열로 바꿔푸는게 편해서 이렇게 푼건데.. 코딩테스트에있어서 이런식으로 문자열이 나왔을떄 배열로 바꿔서 풀면 안좋을까요? 아니면 선생님이 푸시는데로 문자열은 문자열로 푼느게맞는지.. 굼금해서 질문드립니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
답변 부탁드립니다!
filter 사용하지 않고 아래와 같이 indexOf만 이용해도 될까요? function solution(str) { let answer = ""; for (let i = 0; i < str.length; i++) { console.log(str[i], i, str.indexOf(str[i])); if (str.indexOf(str[i]) === i) answer += str[i] + " "; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님 이렇게 풀어도될까요?
function solution(a) { let answer = []; let b = a.split(""); // console.log("b : ", b); for (let i = 0; i < b.length; i++) { if (b[i] === "A") { let c = b[i].replace(b[i], "#"); answer.push(c); } else { answer.push(b[i]); } } let d = answer.join(""); console.log(d); } solution("BANANA"); 저는 이렇게 풀었는데 혹시 이런식으로 풀어도 되는지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요, 질문입니다!
안녕하세요, 아래와 같이 하면 "good"이 출력되는데요. 왜 정답이 될 수 없는지 설명부탁드립니다. 감사합니다. for (let x of str) { if (x.length > max) max = x.length; answer = x; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
두가지 질문 드립니다.
안녕하세요. 질문드립니다. 1. 아래와 같이 하면 안되는 이유는 무엇인가요? if (97 <= num <=122) 2. 아래와 같이 해도 답이 나오는 데 괜찮은지요? for (let x of str) { let num = x.charCodeAt(); if (num >= 97 && num <= 122) x = String.fromCharCode(num - 32); answer += x; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님 질문있습니다
저는 함수를 2가지로 설정해서 풀었는데 혹시 이렇게 풀어도 괜찮을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 ! 코드 리뷰 부탁드립니다.
답은 143이 나왔는데 제 풀이가 맞을까요 ??..
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
flag라는 변수가 굳이 있어야 하는가요?
위 코드와 아래 코드의 결과는 같습니다만, 굳이 flag변수를 만들어야 할 이유를 알수 있을까요? //1 제시하신 정답코드 function solution(s) { let answer = 'NO', flag = 0; let total = s.reduce((a, b) => a + b, 0); let n = s.length; function DP(l, sum){ if(flag) return; if(l === n){ if((total - sum) === sum) { answer = 'YES' flag = 1; } }else{ DP(l + 1, sum + s[l]); DP(l + 1, sum); } } DP(0, 0); return answer; } let array = [1, 3, 5, 6, 7, 10]; console.log(solution(array)); //제가 생각한 부분 function solution(s) { let answer = 'NO' let total = s.reduce((a, b) => a + b, 0); let n = s.length; function DP(l, sum){ if(l === n){ if((total - sum) === sum) { answer = 'YES' // 답을 맞으면 바로 종료 return; } }else{ DP(l + 1, sum + s[l]); DP(l + 1, sum); } } DP(0, 0); return answer; } let array = [1, 3, 5, 6, 7, 10]; console.log(solution(array));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
선생님 코드 확인좀 부탁드립니다!
function solution(arr) { let answer = Number.MIN_SAFE_INTEGER; let check = Array.from({ length: arr.length }, () => false); for (let i = 0; i < arr.length; i++) { if (!check[i]) { let tmp = arr[i]; let cnt = 1; for (let j = i + 1; j < arr.length; j++) { if (tmp < arr[j]) { tmp = arr[j]; check[j] = true; cnt++; } } answer = Math.max(answer, cnt); } } return answer; } let arr = [5, 3, 7, 8, 6, 2, 9, 4]; console.log(solution(arr)); 선생님 이렇게 이미 어딘가에 포함된 배열은 check를 해서 건너뛰는 방식으로도 풀어보았는데요, 맞게끔 푼 것인지 잘 모르겠는데 확인좀 부탁드립니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
아래의 질문과 연관된 질문입니다.
let c = Array.from({length : 5}, () => []); c[0] === c[1]; // false let d = Array(5).fill([]); d[0] === d[1]; // true 이렇게 나오더라구요 두 방식의 차이가 뭐길래 저렇게 나오는건가요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드좀 봐주십쇼 선생님 ㅠㅠ
function solution(n, f) { let answer; let flag = false; let c_table = Array(n).fill(Array(n).fill(0)); let c_list = Array(n).fill(0); let p_check = Array(n + 1).fill(0); let p_list = Array(n).fill(0); function comb(n, r) { if (c_table[n][r]) return c_table[n][r]; if (n === r || r === 0) return 1; return (c_table[n][r] = comb(n - 1, r - 1) + comb(n - 1, r)); } function permutation(k, sum) { if (flag) return; if (k === n && sum === f) { answer = p_list.slice(); flag = true; } else { for (let i = 1; i <= n; i++) { if (!p_check[i]) { p_check[i] = 1; p_list[k] = i; permutation(k + 1, sum + p_list[k] * c_list[k]); p_check[i] = 0; } } } } // c_list 채우기 for (let i = 0; i < n; i++) { c_list[i] = comb(n - 1, i); } permutation(0, 0); console.log(c_table); return answer; } console.log(solution(4, 16)); 분명 Solution까지 참고해서 잘 푼것 같은데요, 조합이 [1, 3, 3, 1] 이 아니라 [1, 3, 4, 1] 이 나오네요 도대체 어디서 4가 나온 것인지 못찾겠습니다 ㅠㅠㅠ
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 선생님 `for`문을 사용하지 않고 풀어봤습니다.
항상 질 좋은 강의 감사드립니다. 다름이 아니라 이런 코드처럼 `for`문을 사용하지 않고 `cnt`를 누적시키면서 조건을 거는 방법도 괜찮은지 여쭤보고 싶습니다. let n = 8; let k = 3; console.log(solution(n, k)); function solution(n, k) { let princes = Array.from({ length: n }, (value, idx) => idx + 1); let cnt = 0; while (princes.length >= 2) { if (cnt === k - 1) princes.splice(0, 1), (cnt = 0); else princes.push(princes.shift()), cnt++; } return +princes; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 수업 잘듣고 있습니다.
항상 이러한 유형이 나오면 아스키 코드를 이용해서 풀고 있는데 이런 방식으로 풀면 혹시 단점이 있을까요 ..? function resolve(str){ let answer = "Yes"; let newStr ="" for(let i =0; i<str.length; i++){ let charStr = str[i].charCodeAt(); if(charStr>=65 && charStr<=90 || charStr>=97 && charStr<=122){ newStr+= str[i].toLowerCase(); } } for(let i=0; i<newStr.length; i++){ if(newStr[i]!== newStr[newStr.length-i-1]) return "No" } return answer } let str="found7, time: study; Yduts; emit, 7Dnuof"; console.log(resolve(str));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
정규표현식을 사용했습니다.
안녕하세요 선생님. 질 좋은 강의 감사드립니다. 다름이 아니라 괄호가 아닌 값만 정규표현식으로 찾아 `answer`에 넣는 과정을 코드로 담았는데 다음과 같은 코드도 괜찮은지 여쭤보고 싶습니다. let s = "(A(BC)D)EF(G(H)(IJ)K)LM(N)"; console.log(solution(s)); function solution(s) { let stack = []; let answer = ""; for (let x of s) { if (stack.length===0 && /[A-Z]/.test(x)) answer+=x; if (x === "(") stack.push(x); else if(x === ")") if (stack[stack.length - 1] === "(") stack.pop(); } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Set 자료형을 활용하는 방식
두번째 풀이에서 unshift와 splice 등 내장함수로 구현해주셨는데, 아래와 같이 Set자료형으로 중복된 값을 없애주도록 간단하게 구현하는 방법은 어떨까요? 시간복잡도나 다른 부분에서 문제가 되는 부분이 있을까요? function solution(size, arr) { return [...new Set(arr.reverse())].splice(0, size); } let arr = [1, 2, 3, 2, 6, 2, 3, 5, 7]; console.log(solution(5, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션1. 3번 문제 - 연필 개수 관련 질문입니다.
[실수 연산 관련] 영상에서는 Math.ceil() 이라는 Math 객체의 ceil 메서드를 사용하셔서 풀어주셨는데, 저는 사실 실수 연산이라는 것이 컴퓨터가 이진수로 되어 있어서 제대로 처리를 하지 못한다고 배웠습니다. 그렇다면 언제 어디서든 실수 연산을 하다가 결과가 예를 들어 12.0000000000001 이렇게 나오게 되면 원래 형식상 저희는 12가 정확히 나올 것으로 예상했지만 위와 같이 부정확한 수가 나올 수 있습니다. 그러면 풀이대로 올림수를 하면 13이 나오게 될 겁니다. 저희는 12로 나올 것으로 정확히 예상했지만 13이 나오게 되면 논리적으로 맞지 않다고 볼 수 있는데 혹시 제가 어떻게 생각하거나 접근하면 좋을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
얕은 복사에 관하여
함수에 들어오는 배열같은 값을 바로 가져가서 쓰지않고 얕은 복사를 하는 이유가 있을까요??