월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
아래처럼 if문에 return 없이 코드를 짜도 괜찮을까요??function solution(n) { let answer = ""; function DFS(n) { if (n === 1) answer += 1; else { DFS(Math.floor(n / 2)); answer += n % 2; } } DFS(n); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
봉우리문제 if문에서 && 연산자
선생님께서 풀어주신 풀이에서if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){flag = 0;break;}if(flag) answer++; 이 부분에서 질문이 있습니다. if 문에서 nx, ny가 각각 0이상이고 n미만이면서 arr[i][j]보다 arr[nx][ny]가 크다면 flag를 0으로 만드는 것이고 이에 해당하지 않는거라면 다 answer++를 하는 것으로 이해했는데요.&&연산자를 써서 위 조건 중 하나라도 해당하지 않는다면 answer++ 로 이어지는 걸로 알고 있습니다. 그렇다면 arr[1][0] =3을 기준으로 봤을때 왼쪽이 arr[1][-1]가 나오기 때문에 ny<0으로 해당 if문 조건을 충족시키지 못해 answer++로 이어지는 것 아닌가요?arr[1][-1]이라면 undefined가 나올텐데 이럴 땐 어떻게 되는 지 궁금합니다. 알아서 무시해버리나요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
저는 아래와 같이 코드를 짰는데 이것도 괜찮은 코드일까요??function solution(arr) { let answer = arr; let length = answer.length; while (length > 1) { for (let i = 0; i < length - 1; i++) { if (answer[i] > answer[i + 1]) [answer[i], answer[i + 1]] = [answer[i + 1], answer[i]]; } length = length - 1; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
시간 복잡도 궁금합니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 4중 for문을 사용하면 시간복잡도도 n^4가 되는 건가요??그렇게 된다면 이렇게 4중 for문을 사용하여 실제 코딩테스트에서도 풀이 적용할 수 있을지도 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
아래 코드도 잘 짠게 맞을까요? function solution(require, direct) { let answer; let queue = ""; for (let i = 0; i < direct.length; i++) { if (require.includes(direct[i])) queue += direct[i]; } if (queue === require) answer = "YES"; else answer = "NO"; return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.function solution(str) { let answer = "YES"; let left = 0; let right = 0; for (let x of str) { if (x === "(") left++; if (x === ")") right++; if (left < right) answer = "NO"; } if (left !== right) answer = "NO"; return answer; }스택을 사용해서 풀지는 않았지만 위와 같은 코드도 괜찮을까요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
board[ny][nx] 로 가야 하는거 아닌가요?
board[nx][ny]나 board[ny][nx] 나 상관은 없을 것 같긴한데 헷갈려서요!x를 x축이 아닌 그냥 의미없는 변수명으로 쓰신건가요??2차원 배열을 2중포문 돌면 y0 (x0, x1, x2...) y1 (x0, x1, x2...) 이런식으로 가면 y가 앞에 나와야하는것 같은데
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
아스키 코드를 사용해서 풀어도 괜찮을까요?
강사님, 안녕하세요. 저는 아스키코드를 사용해서 풀어봤는데, 강의에서 알려주신 방식에 비해 비효율적인지 궁금합니다! 큰 차이가 있을까요? function solution(str) { let answer=''; // 반복문으로 순회 for (let s of str) { let ascii = s.charCodeAt(); // 조건문으로 숫자인지 체크 if (ascii >= 48 && ascii <= 57) { // 숫자면 answer에 추가 answer += s; } } return parseInt(answer); }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
.replace()
안녕하세요~ 정규식과 replace를 사용해서 이렇게 변경해도 될까요? function solution(s) { let re = /A/g; let answer = s.replace(re, "#"); return answer; } let str = "BANANA"; console.log(solution(str));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스스로 풀어보았습니다. 괜찮은 코드인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스택을 사용하기 했는데 효율성이 떨어지는 거 같아 리뷰 요청드립니다~
function solution(a){ let answer=0 let stack = [] let stick = [] let laser = [] // 막대 내 속한 레이저의 갯수 + 1이 최종 막대 갯수 // 막대 한 개 안에 속한 레이저가 총 몇개인지 구해서 카운트 더하기 for(let x=0; x<a.length; x++){ //막대 시작 if(a[x]==="(" && a[x+1] !==")"){ stack.push(x) } // 막대 끝 if(a[x]===")" && a[x-1] !=="("){ const pair = stack.pop() stick.push([pair,x]) } //레이저인데 막대 내부에 있는 레이저인 경우 if(a[x]=="(" && a[x+1]==")" && (a[x-1]=="(" || a[x+2]==")")){ laser.push(x) } } for (let i = 0; i < stick.length; i++) { const start = stick[i][0]; const end = stick[i][1]; let cnt = 0 for (let j = 0; j < laser.length; j++) { if (laser[j] > start && laser[j] < end) { cnt++ } } answer += cnt+1 } console.log(stick,laser) return answer } let a="()(((()())(())()))(())"; console.log(solution(a)); 이렇게 하다 보니 이중 for문을 사용해 복잡도가 n2이 되버려서 효과적이지 못한거같습니다.. 이런 접근 법은 별로일까요
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
LRU 코드 리뷰 부탁드립니다
function setQueue(queue, val) { if (queue.includes(val)) { queue = queue .slice(0, queue.indexOf(val)) .concat(queue.slice(queue.indexOf(val) + 1)); queue.unshift(val); } else { queue.pop(); queue.unshift(val); } return queue; } function solution(s, n, arr) { let queue = new Array(s).fill(0); for (const val of arr) { if (queue.length === s) { queue = setQueue(queue, val); } else { queue = setQueue(queue, val); } } return queue.join(" "); } hit, miss 인 경우의 로직을 setQueue로 함수화해서 처리를 해보았는데, 혹시 틀리거나 예외케이스에서 틀릴 경우가 생길까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
function solution(n, arr) { let new_arr = []; let new_new_arr = []; arr.map((item) => { new_arr.push([...item.toString()].reduce((sum, value) => (sum += 1 * value), 0)); }); let max_num = [...new_arr].sort((a, b) => a - b)[new_arr.length - 1]; for (let i = 0; i < arr.length; i++) { if (new_arr[i] === max_num) { new_new_arr.push(arr[i]); } } return new_new_arr.sort((a, b) => a - b)[new_new_arr.length - 1]; } let arr = [128, 460, 603, 40, 521, 137, 123]; console.log(solution(7, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다
const solution = (m, songs) => { let lt = Math.max(...songs), rt = songs.reduce((prev, cur) => prev + cur); let mid = parseInt((lt + rt) / 2); let nowCount; let minMinutes = Number.MAX_SAFE_INTEGER; const getCount = (minutes, songs) => { let count = 0; let remainMinutes = 0; for (let song of songs) { if (remainMinutes < song) { count++; remainMinutes = minutes - song; } else { remainMinutes -= song; } } return count; }; while (lt <= rt) { nowCount = getCount(mid, songs); console.log(mid, nowCount, minMinutes); if (nowCount > m) { lt = mid + 1; } else { rt = mid - 1; // if (nowCount === m) minMinutes = Math.min(minMinutes, mid); minMinutes = mid; } mid = parseInt((lt + rt) / 2); } return minMinutes; };먼저 getCount 부분을 다르게 작성해봤는데 반례가 있을지 궁금합니다.그리고 제 원래 코드는 while문 내에서 구한 nowCount값이 m과 같을 때만 minMinutes(정답)을 minMinutes와 mid 중 더 작은 값으로 대입해줬는데, nowCount가 m보다 작거나 같은 경우에 무조건 정답으로 대입해도 괜찮은 이유가 무엇인가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
입력 값과 시간 복잡도 관해서 여쭙습니다!
다름이 아니라 이 입력값 N이 30인 경우,연산에 매우 오랜시간이 걸리더라구요!2중 반복문을 사용해서 구하는게 시간 복잡도상 이상적인 것인가요?아니면 DP를 사용하는 방법을 고려해야 되는건가여??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이것도 선택정렬이 맞는건가요?
function solution(arr) { let answer = arr; for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (answer[i] > answer[j]) { let tmp = answer[j]; answer[j] = answer[i]; answer[i] = tmp; } } } return answer; } let arr = [13, 5, 11, 7, 23, 15]; console.log(solution(arr));강의를 한번 다 보고 다시 안보고 푸는 중인데, 이렇게 해도 답은 나오더라구요, 이것도 선택정렬이 맞는건가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
리뷰 부탁드립니다.
function solution(a,b){ let answer=0 let n = a.length let m = b.length let len = lt = 0 let char='' let arr =[] let sH = new Map() for(x of b){ if(!sH.has(x)) sH.set(x,1) else sH.set(x, sH.get(x)+1) } for(let rt=0; rt<m; rt++){ char += a[rt] if(sH.has(a[rt])) { sH.set(a[rt], sH.get(a[rt])-1) } if(sH.get(a[rt])==0) { len++ } if(len == sH.size){ answer++ } if(!sH.has(a[rt])) sH.set(a[rt],1) else sH.set(a[rt], sH.get(a[rt])+1) } const copySh = sH console.log(copySh) for(let rt=m; rt<n; rt++){ lt++ char = a.substring(lt, rt) + a.substring(rt, rt+1) if(char.split('').sort().join('')===b){ answer++ } } return answer } let a="bacaAacba"; let b="abc"; console.log(solution(a, b)); 저는 첫번째만 문자열 3개 3개만 hash 사용하여 비교하고 나머지는 sort해서 같은지 비교하는데 이경우도 복잡도 O(n2)일지 궁금합니다..!잘듣고있습니다. 감사합니다
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 문제는 DP로는 해결이 안될까요??
제목과 같은 질문입니다! :)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
혹시 반례가 있을까요???function solution(N, K) { let queue = []; for(let i = 1; i <= N; i++){ queue.push(i); } // k를 체크하기 위해 idx 변수를 사용한다. let idx = 1; while(queue.length > 1){ if(idx !== K){ queue.push(queue[0]); idx++; }else idx = 1; queue.shift(); } return queue[0]; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다
function solution(s, arr){ let answer = 0; let delivery = [] let prods = [] let max = arr[0][0] for(let i=0; i<arr.length;i++){ prods.push(arr[i][0]) delivery.push(arr[i][arr[i].length-1]) for(let j=0; j<arr[i].length;j++){ if(max <= arr[i][j]){ max = arr[i][j] } } } const res = prods.map((x,idx)=>{ if(x== max){ x = x/2 } return x+delivery[idx] } ).sort((a,b)=> a-b) res.reduce((acc,cur)=>{ if(acc<= s){ answer ++ } return acc+cur },res[0]) return answer } let arr=[[6, 6], [2, 2], [4, 3], [4, 5], [10, 3]]; solution(28, arr)할인을 위 코드 처럼 가장 가격이 큰 상품에 다가 적용했는데 이런 경우 예외 케이스가 발생할까요?