월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
if구문을 이렇게 했을때는 출력값이 YES로만 나오는지 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(s){ let answer = ""; let n = Math.floor(s.length / 2); let newStr = s.toLowerCase(); for(let i = 0; i < n; i++) { if(newStr[i] !== newStr[newStr.length - 1 - i]) { answer = "NO"; } else { answer = "YES"; } } return answer; } let str="goooG"; console.log(solution(str)); </script>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어봤는데 어떤가요??
function solution(arr) { let answer = 0; arr.forEach((a, i) => { if (a >= 1 && arr[i + 1] >= 1) { arr[i + 1] += a; answer += a; } else if (a >= 1) { answer += a; } }); return answer; } let arr = [1, 0, 1, 1, 1, 0, 0, 1, 1, 0]; console.log(solution(arr)); - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
반례가 있을까요?
function solution(arr){ let answer=[]; let original = [...arr]; let sortedArr = arr.sort((a,b) => a - b); original.forEach((a,i) => { if(a !== sortedArr[i]) answer.push(i+1); }) return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
LRU 풀이 질문입니다.
function solution(size, arr){ let answer = Array.from({length:size}, (v => v = 0)); arr.forEach(item => { if(!answer.includes(item)) { answer.shift(); answer.push(item); } else { answer.splice(answer.indexOf(item), 1) answer.push(item) } }) answer.reverse() return answer; } Queue로 풀고 reverse 를 했는데요.. 올바른 풀이라고 볼 수 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제 솔루션도 확인해주실수 있나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 강의 잘 보고 왔습니다. 저는 이 문제를 큐가 아닌 스택으로 풀었습니다. 강사님의 솔루션과 비교하자면 제 코드는 처음에 reverse() 연산이 한 번 들어가지만 shift() 연산이 모두 pop()으로 변해서 데이터의 크기가 커질수록 더 좋은 성능을 보일 거 같은데 맞나요? shift()연산이 앞의 원소 하나빼고 뒤에 있는 원소들을 한칸씩 땡기는 개념이라 한 번의 shift()가 O(N)이 걸린다해서 가급적이면 큐를 직접 구현하는 방법이 아니면 스택을 사용할 수 있으면 사용하는게 낫다고 배워서요 function solution(requiredSubject, curriculum) { let stack = [...requiredSubject.split('').reverse()]; for (const char of curriculum) { if (char === stack[stack.length - 1]) { stack.pop(); if (stack.length === 0) return 'YES'; } } return 'NO'; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 알고리즘 문제 질문드려도 되나요 ..
안녕하세요 강의는 완강했지만, 실력이 부족하여 이문제를 도저히 풀지를 못하겠습니다. 몇일을 생각해도 해결법이 안나오고 원리가 너무 궁금해서 미칠거 같습니다..... 유명한 문제인거같은데 입력이 3 1 4 2 5로 받았을때 1 2 3 4 5 이렇게 sort되기 까지 최소 몇번 옮기면 되냐는 문제입니다. 3 1 4 2 5의 경우면 2를 앞으로 옮겨서 2 3 1 4 5 가되고 그다음 1을 옮겨서 1 2 3 4 5 이렇게 최소 2번만에 되니까 2를 출력 4 3 2 1의 경우 1 4 32 1 2 4 3 1 2 3 4 이렇게 3번을 옮겨야 함으로 3을 출력 하는 문제인데 자바 스크립트로 어떻게 코드를 짜면될까요 ..
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!
이런 방식으로 풀어도 괜찮을까요? function solution(c, arr){ let answer=Number.MIN_SAFE_INTEGER; let ch = Array.from({length:arr.length+1}, ()=>0); function dfs(v) { if(v === arr.length) { let arr1 = [] for(let i = 0; i < arr.length; i++) { if(ch[i]) arr1.push(arr[i]); } if(arr1.length > 0) { let arr1_sum = arr1.reduce((a,b)=>a+b); if(arr1_sum <= c) answer = Math.max(answer, arr1_sum); else return; } } else { ch[v] = 1; dfs(v+1); ch[v] = 0; dfs(v+1); } } dfs(0); return answer; } let arr=[81, 58, 42, 33, 61]; console.log(solution(259, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
요로케도 풀어봄 순열로 구하고 중복을 제거하는 방식으로
function solution(n,r) { let answer=[]; let ch=Array.from({ length: n },() => 0); let temp=Array.from({ length: r },() => 0); function DFS(L) { if(L===r) { answer.push(Array.from(temp)); return; } else { for(let i=0; i<=n; ++i) { if(ch[i]===0) { ch[i]=1; temp[L]=i+1; DFS(L+1); ch[i]=0; } } } } DFS(0); answer.map(v=>{ return v.sort((a,b)=>{ return a-b; }) }) let result = [...new Set(answer.join('!').split('!'))].map(v=>{return v.split(',')}).map(v=>{return v.map(x=>x*1)}); return result; } console.log(solution(4,2));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
좀 더 최적화해봣음
function solution(n,r) { let answer; let diff = n-r; if (diff<r) r = diff; let dy = Array.from(Array(n),()=>Array(r).fill(0)); function DFS(n, r) { if (dy[n-1][r-1]>0) return dy[n-1][r-1]; diff = n-r; if(diff<r) r = diff; if(r === 1) return n; else if(r === n) return 1; else return dy[n-1][r-1] = DFS(n-1,r-1) + DFS(n-1,r); } answer = DFS(n,r); return answer; } console.log(solution(10,7));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다!!!
4번의 부분집합 구하기를 이용해서 코드를 구현해보았습니다. 반례나 고칠 부분이 있다면 조언 부탁드립니다!! function solution(arr){ let answer="NO", flag=0; let sum = arr.reduce((a,b)=>a+b); let ch = Array.from({length:arr.length+1}, ()=>0); function dfs(n) { if(flag) return; if(n === arr.length) { let arr1 = []; for(let i = 0; i < arr.length; i++) { if(ch[i] === 1) arr1.push(arr[i]); } if(arr1.length > 0) { let arr1_sum = arr1.reduce((a,b)=>a+b); if(arr1_sum === sum - arr1_sum) { answer = "YES"; flag = 1 } } } else { ch[n] = 1; dfs(n+1); ch[n] = 0; dfs(n+1); } } dfs(0); return answer; } let arr=[1, 3, 5, 6, 7, 10]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
그래프 행렬과 방문한 노드 체크용 행렬 생성시 n의 개수
안녕하세요 선생님 좋은 강의 항상 잘 보고 있습니다 let ch=Array.from({length:n+1}, ()=>0) let graph=Array.from(Array(n+1), ()=>Array(n+1).fill(0)) 그래프 행렬과 방문한 노드 체크용 행렬 생성시 n+1개 만큼 생성되도록 설정해 주셨는데 이 부분은 입력예제에 맞춤형 설정일까요?? 왜냐하면 만약 문제가 1번 정점 -> 3번 정점 으로 가는 경로를 찾는다면 n이 3이되지만 실제로는 1 -> 4 -> 2 -> 3 처럼 n을 초과하는 정점을 거쳐서 가는 경로도 있는 것 같아서요
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
뒤집은 소수 질문입니다.
<script> function solution(n, arr){ let answer; let reversedNumberArray = [] arr.forEach(item => { let reversedText = '' item.toString().split('').reverse().forEach(item => reversedText += item) reversedNumberArray.push(Number(reversedText)) }) answer = reversedNumberArray.filter(item => { if(item === 1) return false for(let i=2; i <= Math.sqrt(item); i++){ if(item % i === 0) return false } return true }) return answer; } let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100]; console.log(solution(9, arr)); </script> Number('001') 은 1로 변환되기에 이렇게 코드를 짜봤는데요, 문제가 있을까요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 될 경우 서로소임에도 판별하지 않는 경우가 생기던데..
지금의 코드의 경우 flag 제거하면 [1,3,5,7] = [6,10] / [1,5,10] = [3,6,7] 인 부분집합만 판별을 하던데요 (이 두가지 케이스만 걸림 ([6,10] = [1,3,5,7] / [1,3,5,7] = [6,10]이런식으로 순서 바뀐것까지 포함해서 4가지인데 결국 2개나 마찬가지) [1,6] = [7] 이런 케이스는 판별이 안되는데.. 그렇다면 지금 코드가 완벽하지 않을수도 잇다는 생각이 드는데요 지금 코드로도 어떤 케이스든 다 판별이 가능한게 맞을까요? ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡfunction solution(arr) { let answer = []; let check = Array.from({length:arr.length},()=>0); function DFS(idx) { if(idx === arr.length) { let temp = []; let temp2 = []; for(let i=0; i<check.length; ++i) { if(check[i] === 1) temp.push(arr[i]); else temp2.push(arr[i]); } let sum1 = temp.reduce((acc,v)=>{return acc + v;},0) let sum2 = temp2.reduce((acc,v)=>{return acc + v;},0) if(sum1 === sum2) answer.push('YES'); }else { check[idx] = 1; DFS(idx+1); check[idx] = 0; DFS(idx+1); } } DFS(0); //* 부분집합 64개 만들기 //* 서로소인 집합을 추리기 - //* 서로소인 집합의 합을 비교해서 같은 대상이 잇나 검색 } let arr=[1, 3, 5, 6, 7, 10]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
4-2 뒤집은 소수 질문드립니다ㅠㅠ
isPrime 변수가 for문 밖에서 선언되면 73 만 소수로 구분되지 않습니다. 이렇게 오류가 발생하는 원인이 궁금해서 질문드립니다!! <html> <head> <meta charset="UTF-8"> <title>출력결과</title> </head> <body> <script> function solution(arr){ let answer=[]; tmp = []; for(let i of arr){ tmp.push(Number(String(i).split('').reverse().join(''))) } let isPrime = true; // 73만 false로 구분 for(let i of tmp){ // let isPrime = true; // 정상적으로 소수 구별 if (i===1) isPrime = false; else if (i===2) isPrime = true; for (let j=2; j<i; j++){ if (i%j === 0) { isPrime = false; break; } } if (isPrime) answer.push(i); } return answer; } let arr=[32, 55, 62, 20, 250, 370, 200, 30, 100]; console.log(solution(arr)); </script> </body> </html>
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
뒤집은 소수 문제를 다른 방식으로 풀어봤습니다.
안녕하세요 강사님 저는 소수 찾는 함수는 다음과 같이 풀어봤는데요 이렇게 풀어도 문제가 없나요? function isPrime(num){ if(num ===1){ return false; } for(let i = 2; i < num; i++){ if(num % i === 0) return false } return num > 1 } function solution(arr){ let answer = [] for(x of arr){ let tmp = 0 tmp = (x.toString().split('').reverse().join('')) tmp = parseInt(tmp, 10) console.log(tmp) if(isPrime(tmp)) answer.push(tmp) } return answer } const arr = [32, 55, 62, 20, 250, 370, 200, 30, 100] console.log(solution(arr))
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Number.MAX_SAFE_INTEGER 대신 infinity를 사용해도 되나요?
안녕하세요? 강의 열심히 듣고 있습니다! 질문이 있는데요. Number.MAX_SAFE_INTEGER 대신 Infinity를 사용해도 되나요? 저는 항상 Infinity나 -Infinity를 쓰는데 선생님이 쓰시는 Number.MAX_SAFE_INTEGER나 Number.MIN_SAFE_INTEGER와 같은 것인지 궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요 자료구조질문입니다.
안녕하세요 비전공자로 프론트엔드취업을 준비하는취준생입니다 비전공자다보니 학교에서 자료구조 알고리즘강의를수강하지못해서 기본적인 자료구조내용을 모르는수준인데요 따로 자료구조를 공부하고 이 강의를 수강해야하나요? 아니면 이강의내용으로도 취업에필요한 코딩테스트내용이 커버가되나요?? 이강의다듣고 백준이나 프로그래머스문제풀면서 코딩테스트 준비하려는데 이런식으로 준비해도되는지궁금합니다.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이 방법으로는 왜 안되는걸까요??
function solution(s){ let answer = s; for(let i = 0; i < answer.length; i++){ if(answer[i] === "A"){ answer[i] = "#"; } } return answer; }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
와 이게 1판왕이엿던듯 간신히 풀어서 걍 글냄겨요
기본적인 아이디어는 걍 각 막대기마다 가지고 있는 레이저의 개수를 기록하자 이게 다임 function solution(s){ let a = s.split(''); let laser = sum = originPos = 0; let stack = []; for(let i=0; i<s.length; ++i) { if(a[i] === '(' && a[i+1] === '(') { originPos = i; do { if(a[i] === '(') sum++; else sum--; if(a[i] === '(' && a[i+1] === ')') laser++; ++i; } while (sum !== 0); i = originPos; stack.push([i,laser+1]); sum = laser = 0; } } sum = stack.reduce((acc,v)=>{return acc + v[1];},0) return sum; } let b ='(((()())(())()))'; let a="()(((()())(())()))(())"; console.log(solution(a));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다~
스택 안쓰고 괄호를 카운트해서 다음과 같이 해도 될까요? function solution(s) { let answer = "YES"; let cnt = 0; for (let i of s) { if (i === "(") cnt++; if (i === ")") cnt--; if (cnt < 0) return "NO"; } if (cnt !== 0) { return "NO"; } return answer; } let a = "(()(()))(()"; console.log(solution(a));