코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 10. 이분검색

문제 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. 풀이 function solution(target, arr) { let min = 0; let max = arr.length - 1; let median; arr.sort((a, b) => a - b); while (min arr[median]) { min = median + 1; } else if (target < arr[median]) { max = median - 1; } else if (target === arr[median]) { return median ..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 9. 결혼식

문제 현수는 다음 달에 결혼을 합니다. 현수는 결혼식 피로연을 장소를 빌려 3일간 쉬지 않고 하려고 합니다. 피로연에 참석하는 친구들 N명의 참석하는 시간정보를 현수는 친구들에게 미리 요구했습니다. 각 친구들은 자신이 몇 시에 도착해서 몇 시에 떠날 것인지 현수에게 알려주었습니다. 현수는 이 정보를 바탕으로 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 합니다. 여러분이 현수를 도와주세요. 만약 한 친구가 오는 시간 13, 가는시간 15라면 이 친구는 13시 정각에 피로연 장에 존재하는 것이고 15시 정각에는 존재하지 않는다고 가정합니다. 피로연장에 동시에 존재하는 최대 인원을 출력하세요 풀이 function solution(times) { let answ..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 8. 회의실 배정

문제 한 개의 회의실이 있는데 이를 사용하고자 하는 n개의 회의들에 대하여 회의실 사용표를 만들 려고 한다. 각 회의에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하 면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중 단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간의 조건은 (시작시간 { if (a[0] === b[0]) return a[1] - b[1]; else return a[0] - b[0]; }); for (let i = 0; i < meeting.length; i++) { end = meeting[i][1]; count = 1; for (let j = i; j < mee..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 7. 좌표정렬

문제 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하 세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 풀이 function solution(arr) { let answer = arr; let j; for (let i = 1; i < answer.length; i++) { j = i; console.log(answer[i] < answer[i - 1]); while (answer[j] < answer[j - 1]) { [answer[j], answer[j - 1]] = [answer[j - 1], answer[j]]; j -= 1; } } return answer; } let arr = [ [2, 7], [1, 3],..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 6. 장난꾸러기 현수

문제 선생님은 반 학생들에게 반 번호를 정해 주기 위해 반 학생들을 키가 가장 작은 학 생부터 일렬로 키순으로 세웠습니다. 제일 앞에 가장 작은 학생부터 반 번호를 1번부터 N번까 지 부여합니다. 현수는 짝꿍보다 키가 큽니다. 그런데 현수가 앞 번호를 받고 싶어 짝꿍과 자리를 바꿨습니다. 선생님은 이 사실을 모르고 학생들에게 서있는 순서대로 번호를 부여했습니 다. 현수와 짝꿍이 자리를 바꾼 반 학생들의 일렬로 서있는 키 정보가 주어질 때 현수가 받은 번호와 현수 짝꿍이 받은 번호를 차례로 출력하세요. 풀이 function solution(arr) { let answer = []; let sortArr = arr.slice(); sortArr.sort((a, b) => a - b); for (let i =..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 5. Least Recently Used(카카오 캐시 문제 변형)

문제 풀이 function solution(size, arr) { const cach = []; for (let i = 0; i size - 1) cach.pop(); cach.unshift(arr[i]); } } return cach; } let arr = [1, 2, 3, 2, 6, 2, 3, 5, 7]; console.log(solution(5, arr)); 현재 작업을 캐시배열의 맨 앞에 두고 뒷 숫자들은 한 칸씩 밀려나도록 한다. 만약 캐시배열에 있었던 ..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 4. 삽입정렬

문제 N개이 숫자가 입력되면 오름차순으로 삽입정렬로 정렬 풀이 function solution(arr) { let answer = arr; for (let i = 0; i < answer.length; i++) { j = i; while (answer[j] < answer[j - 1]) { [answer[j], answer[j - 1]] = [answer[j - 1], answer[j]]; j -= 1; } } return answer; } let arr = [11, 7, 5, 6, 10, 9]; console.log(solution(arr)); 선택한 숫자와 바로 앞의 숫자와 비교해서 더 작으면 위치를 바꿔준다. 항상 왼쪽이 자기보다 크다는, 즉 ‘정렬이 되어있다'는 가정 하에 탐색을 하므로 만약 자신..

[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 3. Special Sort(구글 인터뷰)

문제 N개의 정수를 정렬해야 한다. 음의 정수는 앞쪽에 양의정수는 뒷쪽에 있어야 한다. 또한 양의정수와 음의정수의 순서에는 변함이 없어야 한다. 숫자 0은 입력되지 않는다. 풀이 function solution(arr) { let answer = arr; for (let i = 0; i answer[j + 1]) { if (answer[j] > 0 && answer[j + 1] < 0) { [answer[j], answer[j + 1]] = [answer[j + 1], answer[j]]; } } } } return answer; } le..