월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
4. 완전탐색에서 3. 멘토링 문제 문의
안녕하세요. 제가 문제를 정확하게 이해를 못한건지 이상한 부분이 있어서 문의 드려요. 답이 (3, 1), (3, 2), (4, 2)와 같은 결과를 만들 수 있다고 되어있는데, arr[2]번째 케이스에서는 해당이 되지 않는걸로 보여지는데 잘못 이해한 걸까요?arr[0]번째 케이스 => 3번 멘토 1등, 1번 멘티 3등 (조건 성립)arr[1]번째 케이스 => 3번 멘토 2등, 1번 멘티 4등 (조건 성립) arr[2]번째 케이스 => 3번 멘토 4등, 1번 멘티 3등 (조건 성립 X)let arr = [ [3, 4, 1, 2], [4, 3, 2, 1], [3, 1, 4, 2] ];
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 되나요 ?
function solution(s){ let answer = ''; let cnt = 1; for (let i = 1; i <= s.length; i++) { if (s[i - 1] === s[i]) cnt++; else { answer += s[i - 1]; if (cnt > 1) answer += cnt; cnt = 1; } } return answer; } let str="KKHSSSSSSSE"; console.log(solution(str)); 이렇게 풀어도 되나요 ?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
갑자기 이해가 안돼서 질문합니다.
if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]) 여기서 nx >= 0, ny >= 0은 이해가 되는데, nx < n 과 ny<n 은 왜 해야하는지 잘 모르겠습니다. 예전에 한참 알고리즘 공부할때는 이해가 됐었는데,, 오랜만에 하니까 이해가 안되네요...
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
답이 3이 되어야 하지 않은가요?
제가 이해를 잘 못하는건지 단순 정렬후4번째 학생을 할인 받고 누적을 구하면 29가 나옵니다.그러면 3번째 학생까지 구매를 해줄수 있는것이니 답이 3이 나와야지 않을까 싶습니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드도 맞을까요?
이렇게 풀어도 맞을까요?function solution(necc, course) { let answer = "YES"; let lst = []; for (c of course) { for (n of necc) { if (c === n) { lst.push(c); break; } } } let compare = lst.join(""); if (necc !== compare) answer = "NO"; return answer; } console.log(solution("ABC", "ACBC"));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션 9. 미로탐색(BFS)(질문)
선생님 안녕하세요 ~ 미로탐색(DFS) 문제를 BFS로 풀어보고 싶은데 어떻게 풀어줘야 문제가해결 될까요?? 지나온 길을 체크한 후 BFS에서는 체크를 어떻게 풀어줘야할지 모르겠습니다.. function solution(arr) { let answer = 0; let n = arr.length - 1; let nx = [-1, 0, 1, 0]; let ny = [0, 1, 0, -1]; let queue = []; queue.push([0, 0]); while (queue.length) { let [x, y] = queue.shift(); for (let k = 0; k < 4; k++) { let dx = x + nx[k]; let dy = y + ny[k]; if (dx === n && dy === n) answer++; if (dx >= 0 && dx <= n && dy >= 0 && dy <= n && arr[dx][dy] === 0) { arr[x][y] = 1; queue.push([dx, dy]); } } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문이 있어서 남겨봅니다..
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.function solution(arr) { let answer = 0; let dx = [-1, 0, 1, 0]; let dy = [0, -1, 0, 1]; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { console.log(arr[i][j]); for (let k = 0; k < 4; k++) { let nx = i + dx[k]; let ny = j + dy[k]; if ( nx >= 0 && nx < arr.length && ny < arr.length && ny >= 0 && arr[i][j] > arr[nx][ny] ) { answer++; } } } } return answer; }알려주신 것처럼 flag 변수로 아닌 것을 찾아서 숫자를 늘려주는 것과 맞는 경우에 늘려주는 것이 어떤 차이가 있는건지 헷갈리네요...
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 for문을 돌아야 하는 정확한 이유가 있을까요?
function solution(arr){ let copy = arr.slice().sort((a, b) => b - a); return copy.map(it => arr.indexOf(it) + 1) } let arr=[87, 89, 92, 100, 76]; console.log(solution(arr)); 제가 코테공부는 거의 안해서 잘 모르는데 시간복잡도가 연관이 있을것 같습니다 2중 for문을 돌아야 하는 이유가 있을까요?
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션8 수열추측하기 질문 있습니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(n, f) { let answer = 0 let flag = 0 let dy = Array.from({ length: 11 }, () => Array(11).fill(0)) let check = Array.from({ length: n + 1 }, () => 0) let temp = Array.from({ length: n }, () => 0) let b = Array.from({ length: n }, () => 0).map((v, i) => combination(n - 1, i)) function combination(n, r) { if (dy[n][r] > 0) return dy[n][r] if (r === 0 || n === r) return 1 return (dy[n][r] = combination(n - 1, r - 1) + combination(n - 1, r)) } function DFS(index, sum) { if (flag) return if (index === n && sum === f) { answer = temp.slice() flag = 1 } else { for (let i = 1; i <= n; i++) { if (check[i] === 1) continue temp[index] = i check[i] = 1 DFS(index + 1, sum + b[index] * temp[index]) check[i] = 0 } } } DFS(0, 0) return answer } console.log(solution(4, 68)) </script> </body> </html>선생님께서 올려주신 답안을 보면DFS 함수 안에서 수열을 만들 때 for문 조건이 i <= n 이므로 만들 수 있는 수열은 [4, 4, 4, 4]가 마지막 값일 것으로 예상됩니다.만약 문제 조건을 N=4, F=68로 바꾸면 답안 코드로는 답을 얻을 수 없습니다. N값이 가장 윗줄에 나오는 숫자의 갯수를 의미하기 때문에 가능한 조건이라 생각됩니다. 이 경우 for문 조건의 n을 더 큰 값으로 바꾸고, 강의에서 알려주신 push, pop을 이용한 코드로 작성하면 답을 얻을 수 있었습니다. 하지만 n값이 10인 경우, 11인 경우 등 n값에 따라 나올 수 있는 답이 다르기 때문에 사전순으로 가장 앞에 오는 것이 무엇인지 판별하려면 또 문제가 생깁니다. N=4, F=68의 문제 조건에서 for문의 n값이 10인 경우 답이 [3, 9, 10, 8]가 나오며, 11인 경우 [1, 8, 11, 10]이 나오기 때문에 11인 경우가 답이 되어야 할 것으로 생각됩니다.n값이 너무 커지면 실행시간이 오래걸리기 때문에 문제 조건에 맞는 적절한 값이 필요할 듯 싶은데, 이걸 잘 모르겠습니다. 제가 이해를 잘못 하였을 수도 있습니다. 선생님께서 조언해 주시면 감사하겠습니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. count 함수에서 sum + x > capacity 조건에서 sum이 왜 x가 되는지 잘 이해가 가질 않습니다. sum + x이 capacity를 초과하니 x를 더하지 않아야되므로 sum의 값은 변화하지 않고 그대로 원래 sum값을 가져야 하는거 아닌가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Array.from vs Array.fill 질문
두 방식으로 각각 선언했을때 답이 다르게나옵니다... 뭐가 잘못된걸까요..?Array.from으로 선언했을때2. Array.fill로 선언했을때
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(timeArr) { let answer; timeArr.sort((a, b) => { if(a[0] == b[0]) return a[1] - b[1]; else return a[0] - b[0]; }) let endT = Number.MAX_SAFE_INTEGER; let count = 0; for(let i of timeArr) { if(i[0] < endT) { count++; endT = Math.min(i[1], endT); } } answer = count; return answer; } const timeArr = [[14, 18], [12, 15], [15, 20], [20, 30], [5, 14]]; console.log(solution(timeArr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드리겠습니다!!
(사진)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
변수선언시 var로 하면 안되나요?
변수 선언시 let으로 하시는데 var로 하면 안되는건가요 ?
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
정규식 match 사용해서 풀었습니다.
function solution(str = '') { return str .match(/(.)\1*/g) .map((word) => word.charAt(0) + (word.length > 1 ? word.length.toString() : '')) .join('') } let str1 = 'KKHSSSSSSSE' console.log(solution(str1))정규식 사용해서 풀이해보았습니다.이상 없을까요? 그리고 문자열 강의를 대부분 보았는데정규식은 따로 다루시는 것 같지 않아서 조금 아쉽습니다.나중에라도 강사님께서 정규식에 대해 소개해주시면 어떨까 해서 글 남겨 봅니다.강사님께서는 현업에도 종사하시고, 수강생들보다 문제풀이 경험이 많으실테니 어떤 정규식들을 많이 보셨는지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
같은문자 제거하기
function solution(s){let answer="";for (const sElement of s) {if(answer.indexOf(sElement) === -1) answer += sElement}return answer;}console.log(solution("ksekkset")); 이렇게 짯는데 어떤가요? 피드백 부탁드립니다 ㅠ
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
자바스크립트 입문 다음 단계
안녕하세요 선생님. 자바스크립트 입문 단계 강의 너무너무 잘들었습니다.혹시 그다음 수준의 강의 출시 계획은 없을까요.?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁 드립니다.
<script> function solution(arr) { let answer = 0; let cross = 0; for (let i = 0; i < arr.length; i++) { cross += arr[i][i]; let hang = 0; let yuel = 0; for (let j = 0; j < arr.length; j++) { hang += arr[i][j]; yuel += arr[j][i]; } if (answer < hang) { answer = hang; } if (answer < yuel) { answer = yuel; } // console.log(answer, tu); } return answer < cross ? cross : answer; } let arr = [ [10, 13, 10, 12, 15], [12, 39, 30, 23, 11], [11, 25, 50, 53, 15], [19, 27, 29, 37, 27], [19, 13, 30, 13, 19], ]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이런방식으로 푸는게 더 깔끔한가요?
/* * 자신의 바로 앞 수보다 큰 수만 출력하는 프로그램을 작성하세요. 단, 첫 번째 수는 무조건 출력한다. */ function solution(integers:number[]): number[] { return integers.filter((int, index) => { if (index === 0) { return int; } if (int > integers[index - 1]) { return int; }; }); } console.log(solution([7,3,9,5,6,12]));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5 연속부분수열1 (Two Pointers Algorithm) 질문있습니다.
강사님이 작성해주신 코드를보면 for문안에 while문을 돌려서 시간복잡도가 O(n^2) 아닌가요?이렇게하면 시간복잡도가 O(n)이라서 아래의 코드가 더 좋은것 아닌가요?