본문 바로가기

개발/알고리즘 풀기11

for, foreach 문의 차이, 최대공약수/최소공배수 구하기, 소수찾기 코딩테스트 관련 면접 준비용 자료 코딩테스트 관련 면접 준비용 자료 1.for, foreach 차이 파악 2.배열내의 숫자들로 이루어진 최소공배수의 총합 구하기 3. 배열내의 숫자들 중 소수만 찾아서 총합 구하기 위의 목차를 클릭하면 해당 글로 자동 이동 합니다. 1. for, foreach 차이 파악 아래와 같은 점수가 주어질 때 1,3,5 번 답을 선택한 사람중 max score 구하기 1-1. for 문으로 구하기 const arr2 = [ { answer: 1, score: 3 }, { answer: 3, score: 4 }, { answer: 5, score: 5 }, ]; function highestScore(arr) { const scores = { a: 0, b: 0, c: 0, }; /.. 2023. 11. 10.
[백준 알고리즘] 10807 개수세기 Javascript 풀이 [백준 알고리즘] 10807 개수세기 Javascript 풀이 풀이 알고리즘 풀면서 중요한 것은 항상 나에게 필요한 정보를 어떻게 얻을 것인지 논리적으로 사고하여 접근하는 것이다. 1. 둘째 줄에 공백으로 구분되어 주어진 정수를 숫자 배열로 만든다. 2. 정수 배열의 수 만큼 반복문을 돌며 주어진 v와 일치하는 것이 있는지 확인 3. 일치한 만큼 cnt를 올려주고, 출력 const fs = require('fs'); const input = fs.readFileSync('/dev/stdin').toString().split('\n'); // let a = parseInt(input[0]); let numArr = input[1].split(' ').map((item) => Number(item)); //.. 2023. 10. 27.
[백준 알고리즘] 2884 알람시계 Javascript 풀이 [백준 알고리즘] 2884 알람시계 Javascript 풀이 풀이 어려운 문제는 아니였지만 수학적 사고를 요하는 문제라 살~짝 오래걸렸다. 우선 고려해야할 경우의 수를 먼저 생각하면 쉽다. 1. 분이 45분 보다 적고, 시간이 0일 경우 2. 분이 45분 보다 적고, 시간이 0이 아닌 경우 3. 분이 45분 보다 많다면 시간은 0이나 0이 아니거나 상관없다. const fs = require('fs'); const input = fs.readFileSync(0).toString().split(' '); let x = parseInt(input[0]); let y = parseInt(input[1]); // const x = 0; // const y = 10; // minute 은 주어진 숫자에서 -45를.. 2023. 10. 24.
[정렬알고리즘] 퀵정렬 Node.js 예제 정렬에 대한 공부를 하다가 대표적이고 자주 쓰이는 퀵정렬을 배웠다. 실제로 적용해봐야 기억에 확실히 남을 것 같아서 코드를 작성해봤다. [정렬알고리즘] 퀵정렬 1. 퀵정렬이란? 2. 퀵정렬의 예시 추천글 위의 목차를 클릭하면 해당 글로 자동 이동 합니다. 1. 퀵정렬이란? 매우 효율적인 정렬 방법중 하나이며 분할 정복 알고리즘 방법을 기반으로 작동한다. 분할 정복 알고리즘이란 큰 문제를 작은 문제로 나누어 해결하는 방식이다. 즉 배열을 pivot 기준으로 비균등한 두 개의 하위 배열로 분할하고, 하위 배열에 대해 퀵정렬을 재귀적으로 호출하여 정렬을 수행한다. 이 과정을 반복하여 배열이 더이상 분할되지 않을 때 까지 정렬한다. 퀵 정렬은 평균적으로 O(n log n)의 시간 복잡도를 가진다. 2. 퀵정렬의.. 2023. 9. 28.