월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
while문을 이용하여 풀어 보았습니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(n) { let answer = 0; let i = 1; while (i <= n) { answer += i; i++; } return answer; } console.log(solution(10)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
삼항연산자를 이용해서 풀어 보았습니다
삼항 연산자를 이용하여 가장 큰 수 를 구하고, 전체 수를 더한값을 뺀 후 나머지 2개의 숫자의 합을 구해서 비교하여 "YES"와"NON"를 구해 보았습니다.<!-- 삼각형 판별하기 --> <html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(a, b, c) { let answer; const longLine = a > b ? (a > c ? a : c) : b > c ? b : c; const totalLine = a + b + c; const remainder = totalLine - longLine; answer = longLine < remainder ? "YES" : "NO"; return answer; } console.log(solution(7, 5, 2)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
미로 탐색 코드 리뷰 부탁드립니다!
반복문을 안 쓰고 짜 봤는데 답은 그대로 나오지만 이렇게 짜도 되는 건지 궁금합니다. 1로 바꿔줬다가 0으로 바꿔주는 시점을 이렇게 해도 괜찮을까요?? 풀이에서는 DFS 돌아올 때마다 해주시는 것 같아서 질문 드립니다! const solution = (miro) => { let ans = 0; const DFS = (N, M) => { if (N < 0 || M < 0 || N > 6 || M > 6) return; if (M === 6 && N === 6) { ans++; } else { if (miro[N][M] === 0) { miro[N][M] = 1; DFS(N - 1, M); DFS(N, M - 1); DFS(N + 1, M); DFS(N, M + 1); miro[N][M] = 0; } } }; DFS(0, 0); return ans; }; console.log( solution([ [0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 0], [0, 0, 0, 1, 0, 0, 0], [1, 1, 0, 1, 0, 1, 1], [1, 1, 0, 0, 0, 0, 1], [1, 1, 0, 1, 1, 0, 0], [1, 0, 0, 0, 0, 0, 0], ]) );
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
splice 를 이용해서 풀어봤습니다. 이렇게 풀어도 될까요?!
처음에 answer을 배열로 만들게 되서 중복제거와 join 을 시키게 되면서 코드의 양이 좀 많아진거 같습니다.function sol(arr) { let answer = arr.split(''); let s = arr[0]; let ctn = 1; for (let i = 1; i < arr.length; i++) { if (arr[i] === s) { s = arr[i]; ctn++; } else { s = arr[i]; if (ctn > 1) { answer.splice(i, 0, ctn); ctn = 1; } } } answer = new Set([...answer]); answer = [...answer].join(''); return answer; } console.log(sol('KKHSSSSSSSE'));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
숫자만 추출 문제 풀어봤습니다. 코드리뷰 부탁드립니다.
지난시간에 배운 정규식 이용해서 풀어봤습니다. 항상 강의 잘 듣고 있습니다. 감사합니다.function sol(s) { let answer = ''; s = s.replace(/[^0-9]/g, ''); answer = s.indexOf(0); answer = s.substring(answer + 1, s.length); return answer; } console.log(sol('g0en2T0s8eSoft'));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
팰린드롬 문제
선생님 앞 강의에서 말씀 해 주신 s.length -i -1 로 풀고싶어서 아스키코드를 이용해봤는데 if 문을 열고 소문자 대문자 일 때만 돌게끔 범위를 설정해줬습니다.이런 방법으로는 풀수없는걸까요 ? s[i] !== s[s.length -i -1] 일때는 'NO' 를 출력하게끔 했는데 맞는 문자열이 들어가도 'NO'를 출력하더라구요 ㅠㅠfunction solution(s) { let answer = 'YES'; s = s.toLowerCase(); for (let i = 0; i < Math.floor(s.length / 2); i++) { if ( s[i].charCodeAt() >= 65 || s[i].charCodeAt() <= 90 || s[i].charCodeAt() >= 97 || s[i].charCodeAt() <= 122 ) { if (s[i] !== s[s.length - i - 1]) { return 'NO'; } } } return answer; } console.log(solution('found7, time: study; Yduts; emit, 7DnuoF'));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
10-4. 동전교환(냅색 알고리즘)
안녕하세요. 선생님. 동적계획법 파트에서 [동전교환(냅색알고리즘)] 정답 코드에 오류가 있는 것 같습니다. 제 파일만 그런지 모르겠는데, 첫번째 for 문에서 i 가 1부터 초기화되고, 뒤에 변수명이 arr.length로 되어있습니다.( arr.length > coin.length) 확인 부탁드립니다!좋은 강의 감사드립니다..!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
07-01 선택정렮
코드보다는 알고리즘의 사용이유입니다. sort()를 사용하면 간단하게 구현 할 수 있는데, 선택정렬을 사용하는 이유가 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Set 자료형 사용
혹시 Set 자료형으로 중복을 제거하고 문자열로 만들어주는 방식으로 작성했는데 괜찮을까요 ?? <html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(s) { let answer = ""; answer = [...new Set(s)].join(""); return answer; } console.log(solution("ksekkset")); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
와우... 익숙하지 않은 방법이라 어렵네요. 객체로 데이터를 가공해서 풀어봤습니다. [리뷰부탁드려요]
const solution = (arr, mathScore={}) => { let count = result = 0; arr.forEach((list) => { list.forEach((rank, idx) => { mathScore[rank] = mathScore[rank] ? [...mathScore[rank], idx] : [idx] }); }); for(let i=1;i<=arr[0].length; i++) { for(let j=1;j<=arr[0].length; j++) { count=0 if(i !== j) { for(let k=0;k<arr.length; k++) { mathScore[i][k] > mathScore[j][k] && count++ } } count === arr.length && result++ } } return result }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
function solution(size, arr) { let answer = [0, 0, 0, 0, 0]; arr.forEach((element) => { if (!answer.includes(element) && answer.length !== size) { answer.unshift(element); } else if (!answer.includes(element) && answer.length === size) { answer.pop(); answer.unshift(element); } else if (answer.includes(element)) { let index = answer.findIndex((el) => el === element); let tmp = answer[index]; answer.splice(index, 1); answer.unshift(tmp); } }); return answer; } forEach안에서 for문을 돌지 않고 짜봤습니다.좀 코드가 지저분한것 같은데 괜찮은 코드일까요?감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문있습니다!
뮤직비디오 문제에서count( ) 함수에서 cnt를 1로 설정하셨는데, 0이 아닌 1인 이유가 궁금합니다!
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드려요 ㅎㅎ
const solution2 = (arr, count = 0) => { for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { const isTop = i === 0; const isBottom = i === arr.length - 1; const isLeft = j === 0; const isRight = j === arr.length - 1; const current = arr[i][j]; (isTop || arr[i - 1][j] < current) && (isBottom || arr[i + 1][j] < current) && (isLeft || arr[i][j - 1] < current) && (isRight || arr[i][j + 1] < current) && count++; } } return count; };
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
EDWIN, 코드리뷰 부탁드립니다.^^ Array.from 을 활용해 봤습니다.
const solution = (arr) => { const resultArr = [ ...arr, ...arr.map((_,location) => Array.from({length:arr.length}, (_,idx) => arr[idx][location])), Array.from({length:arr.length}, (_, idx) => arr[idx][idx]), Array.from({length:arr.length}, (_,idx) => arr[arr.length-idx-1][arr.length-idx-1]) ] return Math.max(...resultArr.map(list => list.reduce((pre, cur) => pre+cur, 0))) }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
다른 방식으로 풀었는데 이 풀이도 성능이 괜찮을까요?
function solution(n, m) { const answer = []; const DFS = (num, combination) => { if (combination.length === m) { answer.push(combination.slice()); return; } if (num > n) return; DFS(num + 1, [...combination, num]); DFS(num + 1, [...combination]); }; DFS(1, []); return answer; } console.log(solution(4, 2));이전에 배웠던 방식처럼 해당 수를 포함하는 경우와 포함하지 않는 경우로 DFS를 호출하고 combination 배열이 길이가 m이면 answer에 push하도록 했습니다.이 방식으로 풀어도 정답 코드와 성능이 크게 다르지 않을까요?
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
중첩반복문 해결
const solution = (arr) => { let cnt = 1; let rankList = {}; let sort = [...arr].sort((a, b) => b - a); sort.forEach( (point, idx) => point !== sort[idx - 1] && (rankList[point] = cnt + idx)); return arr.map((point) => rankList[point]); };중첩을 결하고자 위와 같이 풀어봤습니다. 평가를 부탁드립니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(s) { let answer; let stack = []; for (let x of s) { if (x === "+") { stack.push(stack.pop() + stack.pop()); } else if (x === "-") { stack.push(stack.pop() - stack.pop()); } else if (x === "*") { stack.push(stack.pop() * stack.pop()); } else if (x === "/") { stack.push(stack.pop() / stack.pop()); } else stack.push(Number(x)); } answer = stack[0]; return answer; } let str = "352+*9-"; console.log(solution(str)); </script> </body> </html> 위에 같이 풀어도 상관 없을까요? rt, lt변수를 사용하지 않고 그냥 바로바로 pop()한 값들을 계산하여 넣어줬습니다. 가독성이라던가 코드의 질(?) 측면에서 문제점이 있을까요? 감사합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
function solution(s) { let answer = ""; let stack = []; for (let x of s) { if (x === "(") stack.push(x); else if (x === ")") { stack.pop(); } else if (stack.length === 0) answer += x; } return answer; }")"문자를 만나기 전까지 모두 push() 하는것이 아닌 알파벳 문자를 만났을때 스택에 괄호가 존재한다면 괄호로 감싸진 문자열이기 때문에 0일때만 answer에 더했습니다. 괜찮은 답일까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션5 - 7번 아나그램 질문있습니다.
let a = 'abacc'; let b = 'caab';입력 예시가 다음과 같을때 NO가 나와야 하지 않나요??마지막에 map에 남은 값이 있는 요소가 있는지 확인이 필요한게 아닌가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니당
function solution(m, arr){ let answer = 0; for (let i = 0; i < arr.length; i++) { let sum = 0; let index = i; while(sum < m) { sum += arr[index]; if (sum === m) { answer++; break; } else index++; } } return answer; } let a=[1, 2, 1, 3, 1, 1, 1, 2]; console.log(solution(6, a)); 이렇게 작성해도 될까요 ?