월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
set을 사용해서 풀었는데 반례가 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. Set을 이용해서 풀었는데 반례가 있을까요? const express = require('express') const app = express() const server = app.listen(3001, () => { let str = 'CBA' let str2 = 'CBDAGE' console.log(solution(str, str2)) function solution(must, dolist) { let answer let mustList = new Set(must) let checkList = '' for (let i = 0; i < dolist.length; i++) { if (mustList.has(dolist[i])) checkList = checkList + dolist[i] } if (checkList == must) { answer = 'YES' } else answer = 'NO' return answer } })
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
merge sort 방식으로 풀어도 될까요?
병합 정렬 로직 부분에 병합 부분을 사용해서 풀었는데 적절한 풀이인지 궁금해서 여쭈어 봅니다! const solution = (arr1, arr2) => { let result = []; while (arr1.length && arr2.length) { if (arr1[0] <= arr2[0]) { result.push(arr1.shift()); } else { result.push(arr2.shift()); } } result = [...result, ...arr1, ...arr2]; return result; }; const result = solution([1, 3, 5], [2, 3, 6, 7, 9]); console.log(result);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
풀어봤어요!
answer에 배열의 첫 번째 숫자를 놓고 for문을 통해 그 다음 자리부터 비교를 해서 최솟값이 answer에 들어가도록 했습니다 function findSmallestNumber(arr) { let answer = arr[0]; for(let i = 1; i < arr.length; i++) { if(answer > arr[i]) answer = arr[i]; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
AND 연산자를 이용해 풀어봤습니다
삼각형이 만들어지기 위해선는 가장 짧은 두 변의 합이 가장 긴 변의 합보다 커야한다는 점에 착안해 AND 연산자를 이용해서 풀어봤습니다! (정삼각형 제외) function findTriangle(a, b, c) { let answer; if (a + b > c && b + c > a && c + a > b) answer = 'YES!'; else answer = 'NO!'; return answer; } findTriangle(6, 7, 11);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
forEach와 Math.min()을 사용해봤어요
저는 forEach를 사용해 배열을 순환하고 따로 홀수들만 들어있는 배열을 만들어 Math.min()을 사용해서 결과값을 내봤어요. 좋은 답은 아니라고 생각했지만 우선 결과값을 내고 싶어서 이렇게 해봤어요ㅠ let arr = [12, 77, 38, 41, 53, 92, 85]; function solution(arr) { let answer = []; let odd_sum = 0, odd_array = []; arr.forEach(item => { if(item % 2 !== 0) { odd_array.push(item); odd_sum += item; } }) answer.push(odd_sum); answer.push(Math.min(...odd_array)); return answer; } solution(arr);
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
연속부분수열2 질문
선생님 안녕하세요. 해당 강의 보다가 궁금한 점이 있어서 질문 드립니다. 혹시 배열의 특정 원소가 m보다 크면, (만약 m=5이고 [1,7,1,2,3] 이라는 배열이 주어진다면) 어떻게 풀이가 되는지 알려주실 수 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다!
그리디 알고리즘 (결정 알고리즘?)과 브루투스 포스랑 비슷한 느낌인 것 같은데요! 문제를 읽었을 때 혹시 브루투스 포스와 그리디의 차이점을 명확하게 할 수 있는 방법이 있을까요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
혹시나 다른 코드 보고 싶으신 분들을 위해 올립니다!
const solution = (arr, m) => { let result = 0; let startPoint = Math.max(...arr); let endPoint = arr.reduce((acc, cur) => acc + cur, 0); while (startPoint <= endPoint) { const middlePoint = Math.floor((startPoint + endPoint) / 2); let sum = 0; for (let i = 0; i < arr.length; i++) { if (sum + arr[i] > middlePoint) { result++; sum = arr[i]; } else { sum += arr[i]; } } if (result <= m) { endPoint = middlePoint - 1; } else { startPoint = middlePoint + 1; } } return result; };
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
중복제거를 해주는 이유가 있는건가요?
안녕하세요. 강의 중에 let tmp = new Set();으로 선언하시던데 중복을 제거하는 이유가 있는건가요? 문제에 3장을 뽑을 수 있는 모든 경우를 기록한다고 나와있어서요. 아니면 문제 변형식으로 푼다고 말씀하신건데 제가 놓친 건지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 접근 방법도 괜찮을까요??
function solution(s, e) { let min = Number.MAX_SAFE_INTEGER; const total = e - s; if (total < 0) return -total; const recursive = (count, distance) => { if (count <= Math.floor(total / 5) + 3) { if ((distance === 0) & (count < min)) min = count; if (distance > 3) recursive(count + 1, distance - 5); else if (distance < 0) recursive(count + 1, distance + 1); else recursive(count + 1, distance - 1); } }; recursive(0, total); return min; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
이번 섹션 시작하고 30분, 1시간씩 생각해봐도 답이 안보여서 자괴감을 많이 느꼈는데 오늘 처음으로 혼자 풀어봤습니다. 괜찮은 코드가 맞을까요? let answer = 0, sum = 0; for (let lt = 0; lt < arr.length; lt++) { let rt = lt; while (rt < lt + k) sum += arr[rt++]; if (sum > answer) answer = sum; sum = 0; } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
올바른 방향인지 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 비슷하면서도 slice와 map을 이용해서 문제를 풀었는데 시간복잡도상으로 slice가 들어가면서 더 좋지 않은 방식으로 풀게 된걸까요? function solution(arr1,arr2){ let answer =[]; let n=0,m=0; while(true){ if(arr1[n]<arr2[m]) { answer.push(arr1[n]) n++ if(n>=arr1.length){ arr2.slice(m,).map(data=>answer.push(data)) break; } } else{ answer.push(arr2[m]) m++ if(m>=arr2.length){ arr1.slice(n,).map(data=>answer.push(data)) break; } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 혹시 이렇게 풀어도 될까요?
function solution_3_my(n, array) { let answer = []; const students = Array.from({ length: n }, (_, index) => index + 1); students.forEach((firstS) => { students.forEach((secondS) => { if (firstS === secondS) return; let pi = 0; let pj = 0; let flage = true; for (let s = 0; s < array.length; s++) { const roundS = array[s]; // 처음 뽑은 학생의 등수 pi = roundS.findIndex((v) => v === firstS); // 두번째 뽑은 학생의 등수 pj = roundS.findIndex((v) => v === secondS); if (pi > pj) { flage = false; break; } } if (flage) answer.push([firstS, secondS]); }); }); return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce방식을 풀어봤습니다.
function solution(cnt, arr){ if(arr.length !== cnt){ return; } let answer = 0; arr.reduce((previous, current) => { if(current === 1){ answer += previous; return previous + 1; }else{ return 1; } }, arr[0]) return answer;}이런방식은 어떤가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다!
이 문제를 큐를 생각 못하고 원형 연결 리스트를 통해 풀었는데 원형 연결리스트와 큐 중 어느 것이 알고리즘 상 효율적인 풀이가 되는 건지 여쭙고 싶습니다! 또 유사한 문제가 나오면 큐, 원형 중 어느 것을 선택해야 하는지에 대한 기준이 있을까요??
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
k번째 까지만 array 출력
안녕하세요, 선생님. k번째 큰 수를 출력하는 거니까 처음 arr를 내림차순으로 정렬한 뒤에 숫자 3개를 뽑아서 그 개수가 k가 되면 for문을 종료하게 코드를 작성했습니다. (처음에는 모든 for문에 같은 if문과 break를 입력했는데, 구글링해서 중첩반복문을 한번에 종료하는 방법을 적용했습니다.) 혹시 이런식으로 k개만 출력한 경우에 다른 값이 나오는 경우가 있을까요? <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(s, list){ let answer=0; let n = list.length; let numbers = [] //숫자 3개의 합을 더한 값을 리턴할 배열 list.sort((a,b)=>b-a); //내림차순 정렬 loop1: for(let i=0; i<n-2; i++){ loop2: for(let j=i+1; j<n-1; j++){ loop3: for(let k=j+1; k<n; k++){ let num = list[i]+list[j]+list[k]; if(numbers.indexOf(num)===-1) numbers.push(num); //중복인 숫자는 기록하지 않음 if(numbers.length===s) break loop1; //s번째 숫자를 구하는 거니까 길이가 s가 되면 더이상 for문이 돌 필요가 없음 } } } numbers.sort((a,b)=>b-a); console.log(numbers); answer = numbers[s-1]; return answer; } let arr=[13, 15, 34, 23, 45, 65, 33, 11, 26, 42]; console.log(solution(3, arr)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
text의 위치를 찾아서 구현해봤습니다. 코드리뷰 부탁드려도 될까여?
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(s, t) { let sArr = s.split(""); let answer = sArr.slice(); sArr.forEach((element, index) => { if (element == t) { let p = 0; answer[index] = p; for (let i = index - 1; i >= 0; i--) { p++; if (typeof answer[i] === "string") answer[i] = p; else answer[i] = Math.min(answer[i], p); } p = 0; for (let i = index + 1; i < answer.length; i++) { p++; if (typeof answer[i] === "string") answer[i] = p; else answer[i] = Math.min(answer[i], p); } } }); return answer; } let str = "teachermode"; console.log(solution(str, "e")); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 section1 15번 문제 관련해 질문이 있습니다.
위에는 제가 해설을 보기 전 작성한 코드입니다.parseInt / Math.floor / Number.parseInt 모두 정수값을 구할 수 있고, slice와 substring, substr 모두 문자열을 도출해 낼 수 있었습니다. 이 각각의 방법을 사용하는게 단순히 기호의 차이인지 아니면 더 선호되는 방법이 있는지 궁금합니다!!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 질문이 있습니다.
이제 막 코딩 테스트 공부를 시작했습니다. 먼저 풀어보고 강사님 강의를 듣고 있는데제가 작성한 코드가 정상적으로 작동되기는하는데 강사님께서 작성하신 코드와 다른 경우가 많아서요.작성한 코드가 좋은 코드인지, 아니라면 어떤 부분이 문제인지 구분할 수 없어서 이렇게 질문드립니다.어떤 부분을 유의하면서 작성하는게 맞는건지 조언해주시면 감사드리겠습니다. 사진은 section1 - 6강 홀수 구하기 / 1-7 10부제 에서 제가 작성한 코드입니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
조건 질문
질문있습니다 ~! 조건문에 lt <= rt 말고 true로 작성하는 것도 괜찮은 건가요? while (true) { let mid = Math.floor((left + right) / 2); if (arr[mid] === target) { answer = mid + 1; break; } else if (arr[mid] > target) right = mid - 1; else left = mid + 1; }