월 15,400원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort 사용해도 괜찮은 걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
reduce방식으로 풀어보았습니다.
감사합니다.function solution(array) { let continuous = 0; return array.reduce((pre, current) => { current === 1 ? continuous++ : (continuous = 0); return pre + continuous; }, 0); } console.log(solution([1, 0, 1, 1, 1, 0, 0, 1, 1, 0]));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
map을 이용해서 풀어 보았습니다
원본 배열 길이와 반환 배열 길이가 같기 때문에 map 함수를 이용하였고, if else 분기문을 가독성 좋게 switch case를 이용하였습니다.function solution(array, array2) { return array.map((v, index) => { if (v === array2[index]) return "D"; switch (v) { case 1: return array2[index] === 2 ? "B" : "A"; case 2: return array2[index] === 1 ? "A" : "B"; case 3: return array2[index] === 1 ? "B" : "A"; } }); } console.log(solution([2, 3, 3, 1, 3], [1, 1, 2, 2, 3]));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게해도 괜찮은걸까요?
(사진)
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
filter를 이용해서 풀어보았습니다.
감사합니다. // 내코드 function solution(array) { let max = 0; return array.filter((v) => { if (v > max) { max = v; return true; } }).length; } console.log(solution([130, 135, 148, 140, 145, 150, 150, 153]));결과는 : [130,135,148,150,153] 5가 나옵니다
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
filter를 이용한 풀이
강의 보기전 제가 문제를 제대로 이해 했는지 모르겠으나,첫줄6과 7을 비교를 처음 시작, 그 이후 부터 자신의 바로 앞 수보다 큰 수만 출력 이렇게 이해해서 filter와 삼항연산자를 이용하여 풀어보았습니다.function solution(num, array) { return array.filter((v, index) => index === 0 ? v > num : array[index] > array[index - 1] ); } console.log(solution(6, [7, 3, 9, 5, 6, 12]));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다 .선생님..^^
function solution(arr) { let result = Number.MIN_SAFE_INTEGER; let row = 0; let column = new Array(arr.length).fill(0); let diagonal = new Array(2).fill(0); let miniDia1 = 0; /** 대각의 합 */ let miniDia2 = 0; for (let i = 0; i < arr.length; i++) { let miniRow = 0; /** 행의 합 */ let miniCol = 0; /** 열의 합 */ for (let r = 0; r < arr.length; r++) { miniRow += arr[i][r]; miniCol += arr[r][i]; if (miniRow > row) row = miniRow; }; miniDia1 += arr[i][i]; miniDia2 += arr[i][arr.length - 1 - i]; column[i] = miniCol; }; diagonal[0] = miniDia1; diagonal[1] = miniDia2; const maxCol = Math.max(...column); const maxDia = Math.max(...diagonal); result = Math.max(maxCol, maxDia, row); return result; };
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
지난 시간에 배운 indexOf를 사용하여 풀어보았습니다.
감사합니다// 내코드 function solution(length, ...rest) { let answer = []; for (const key in rest) { if (rest.indexOf(rest[key]) === Number(key)) answer.push(rest[key]); } return answer.join(","); } console.log(solution(5, "good", "time", "good", "time", "student"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
label을 이용한 일곱난쟁이 반복문 탈출 공유드립니다.
function solution(arr) { // 7난쟁이가 아닌 9명이 있는상황 // 전체 난쟁이의 키는 100 const length = arr.length; const sum = arr.reduce((acc, value) => acc + value); const target = sum - 100; // 2중 반복분 종료 시 // 종료하고자하는 외부 for문에 label 지정 // break 뒤에 라벨명 명시 // >> 해당 스코프 종료 first: for (let i = 0; i < length - 1; i++) { const matchValue = target - arr[i]; for (let j = i + 1; j < length; j++) { if (matchValue === arr[j]) { arr.splice(j, 1); arr.splice(i, 1); break first; } } } return arr; } console.log(solution([20, 7, 23, 19, 10, 15, 25, 8, 13]));
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스택과 불린을 이용해서 솔루션해봤는데 괜찮을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의를 듣기 전 풀어봤는데, 설명해주신 방법도 숙지하겠습니다.function solution(s) { let answer = ''; let stack = []; let contain = false for (let ele of s) { if (ele === '(') { contain = true stack.push(ele) } if (!contain) { answer += ele } if (ele === ')') { stack.pop() if (stack.length === 0) contain = false } } return answer }
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
안녕하세요. 강의를 보기전 제 스스로 풀어 보았는데, 어떤가요?
항상 감사합니다function solution(question) { let answer = ""; if (question.length > 100) return; const oddNumber = question.length % 2 === 1 ? true : false; const MiddleLength = Math.floor(question.length / 2); let count = 0; for (const z of question) { if (oddNumber) { if (MiddleLength === count) { answer += z; } } else { if (MiddleLength - 1 === count || MiddleLength === count) { answer += z; } } count++; } return answer; } console.log(solution("study")); //"u"
- 해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
계단오르기 질문
강의를 듣기에 앞서 계단오르기 문제를 DFS로 풀었습니다. 아래와 같이 문제를 풀어도 문제가 없을까요?// 계단 오르기 function solution(target){ const count = [1,2]; const answerArr = [] const set = [] let answer = 0; function dfs(n){ if(n>target) return if(n === target){ answer+=1 answerArr.push([...set]) return } for(let el of count){ set.push(el) dfs(n+el) set.pop() } } dfs(0) console.log(answerArr) return answer }; console.log(solution(7)) console.log(solution(8)) console.log(solution(4))
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
간단한것 같아 toUpperCase로 후딱 풀었습니다!
감사합니다. function solution(question) { return question.toUpperCase(); } console.log(solution("ItisTimeToStudy"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
배열에 for of, 객체에 for in이라고 생각하다가 문자열에 for of 너무 좋군요
감사합니다.function solution(question) { let answer = 0; for (const x of question) { if (x === x.toUpperCase()) answer++; } return answer; } console.log(solution("KoreaTimeGood"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제가 풀던 방식과 이전에 배운 for of를 이용해서 두가지 방법으로 풀어보았습니다
감사합니다.function solution2(question, word) { let i = 0; for (const x of question) { if (x === word) i++; } return i; } function solution(question, word) { return question.split(word).length - 1; } console.log(solution("COMPUTERPROGRAMMING", "R")); console.log(solution2("COMPUTERPROGRAMMING", "R"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
특정 단어를 기준으로 split으로 자르고 join으로 다시 붙여서 풀었습니다
감사합니다.function solution(question) { return question.split("A").join("#"); } console.log(solution("BANANA")); console.log(solution("AATTNK")); console.log(solution("AJUERHNHANLDJFMNKAMMJKDJKFAMMKA"));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제 실력으로 최대한 머리 짜내서 혼자 풀어 보았습니다. 너무 허접 할까요?
<script> function solution(arr) { const initialValue = 0; const result = arr.reduce((prev, current) => prev + current, initialValue); const overSum = result - 100; const pickNum = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (arr[i] === arr[j]) continue; if (arr[i] + arr[j] === overSum) pickNum.push(arr[i]); } } return arr.filter((val) => val !== pickNum[pickNum.length - 2] && val !== pickNum[pickNum.length - 1] ); } let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13]; //let arr = [25, 7, 23, 19, 10, 55, 20, 8, 13]; //let arr = [33, 9, 23, 17, 10, 55, 20, 8, 13]; //let arr = [13, 9, 61, 17, 11, 22, 20, 8, 70]; console.log(solution(arr)); </script> 코드 설명reduce 함수로 먼저 모든 9명의 난쟁이 녀석들 합을 구합니다.난쟁이 합은 총 100이니까 9명의 난쟁이 합 - 100을 합니다. ( 100보다 작을순 없으니까)범인은 2명이니까 중첩 for문을 돌려서 두명의 합이 2번의 값과 같은 녀석을 구합니다. pickNum 배열에 첫번째 녀석과 두번째 녀석이 담깁니다.filter함수를 이용해서 첫번째 가짜 난쟁이 값과 두번째 가짜 난쟁이 값에 해당하지 않은 녀석들로 진짜 난쟁이들 배열을 구성합니다여러가지 테스트 케이스를 만들어서 해보았는데, 진짜 난쟁이들 잘 찾습니다
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
toString으로 변환하여 비교해서 풀어 보았습니다.
문제를 이해를 잘 못한건지, 저는 날짜가 먼저 3일,13일, 23일이 올 수 있고 그걸 일의자리 수를 알아낸 후 비교하여 풀었습니다. function solution(day, arr) { let answer; let waringCars = []; const checkDay = day.toString().length === 1 ? day.toString() : day.toString()[1]; arr.map((cars) => { if (cars.toString()[1] === checkDay) waringCars.push(cars); }); return waringCars.length; } const day = 23; let arr = [25, 23, 11, 47, 53, 17, 33]; console.log(solution(day, arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
map함수를 이용하여 풀어보았습니다.
map함수를 이용하여 풀어보았습니다.function solution(arr) { let sum = 0; let oddNumbers = []; arr.map((value) => { if (value % 2 === 1) { sum += value; oddNumbers.push(value); } }); return [sum, Math.min(...oddNumbers)]; } let arr = [12, 77, 38, 41, 53, 92, 85]; console.log(solution(arr));
- 미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
스프레드 연산자로 문제를 풀어 보았어요
풀고 난 후 강의를 보니 for문으로 풀었어야 됬나 싶군요. function solution(arr) { return Math.min(...arr); } let arr = [5, 7, 1, 3, 2, 9, 11]; console.log(solution(arr));