본문 바로가기

inflearn78

[ 자바스크립트(JavaScript) ] section07 - 9 - 결혼식 📍 section07 - 9 - 결혼식 피로연 장소에 동시에 존재하는 최대 인원수를 구하여 그 인원을 수용할 수 있는 장소를 빌리려고 한다. 만약, 입력이 13 15라면 13시 정각에 피로연장에 존재하고 15시에는 존재하지 않는다. 피로연장에 동시에 존재하는 최대 인원을 출력하는 문제다. 이 문제도 greedy로 풀 수 있는 문제인데, 회의실 배정처럼 입력을 정렬을 하되, 정렬 기준을 결혼식에 등장하는 시간(s), 결혼식장에서 나가는 시간(e)으로 나눠서 오름차순으로 정렬을 해야 한다. 입력을 타임라인 형식으로 그려보면 다음과 같다. 여기서 주의할 점은 나간시간(e)은 포함하지 않으므로 오름차순으로 정렬할 때 들어오는시간(s)과 나가는시간(e)이 동일하면 e가 먼저 오게 설정한다. 피로연에 등장하는 시간.. 2021. 9. 13.
[ 자바스크립트(JavaScript) ] section07 - 8 - 회의실 배정(greedy) 📍 section07 - 8 - 회의실 배정(greedy) 이번 문제는 greedy 문제다. greedy가 무엇인지 궁금하다면 이전에 작성한 글을 참고하자. 보통 정렬 문제와 자주 짝을 지어 출제되는데 강의 선생님께서 정렬 이후 순서대로 하나씩 처리하는 로직이나 우선순위 큐를 사용하는 로직은 보통 그리디로 풀면 된다고 하셨다. 문제에서 회의가 겹치지 않으면서 회의실을 사용할 수 있는 최대수의 회의를 찾으라고 했는데, 최대한 많이 회의를 하려면 끝나는 시간이 짧은 순서대로 정렬하고 풀어야 한다. 끝나는 시간이 긴 시간부터 풀게 되면 만약, 해당 시간이 끝나기 전에 2개의 회의를 진행할 수 있다면 손해기 때문이다. 끝나는 회의 순으로 오름차순 정렬한다. 이전 회의 종료시간 eT(endTime)=0으로 초기화.. 2021. 9. 11.
[ 자바스크립트(JavaScript) ] section07 - 7 - 좌표정렬 📍 section07 - 7 - 좌표정렬 평면상의 좌표(x, y)가 주어질 때 모든 좌표를 오름차순으로 정렬하는데 만약, x값이 같으면 y을 기준으로 정렬하는 문제다. 잘 내림차순 / 오름차순도 보고싶다면 이전글도 참고하자. function solution(arr) { let answer = arr; arr.sort((a, b) => { if (a[0] === b[0]) return a[1] - b[1]; else return a[0] - b[0]; }); return answer; } let arr = [ [2, 7], [1, 3], [1, 2], [2, 5], [3, 6], ]; console.log(solution(arr)); 👉🏾 [[1, 2], [1, 3], [2, 5], [2, 7], [3, .. 2021. 9. 10.
[ 자바스크립트(JavaScript) ] section07 - 6 - 장난꾸러기 현수 📍 section07 - 6 - 장난꾸러기 현수 여러 학생들 사이에서 자리를 바꾼 현수와 짝꿍의 번호를 출력하는 문제다. sort를 사용하지 않고 앞 뒤 index를 비교하여 감소하는 index면 서로 자리를 바꿨다고 판단할 수 있지만, 앞 뒤 index가 동일할 때는 어느번호가 현수, 짝꿍인지 모르기 때문에 sort를 사용했다. arr과 copyArr을 비교한 다음, value가 다른 index를 답으로 리턴했다. // let arr = [120, 125, 152, 130, 135, 135, 143, 127, 160]; let arr = [120, 130, 150, 150, 130 ,150] console.log(solution(arr)); function solution(arr) { let sortA.. 2021. 9. 10.
[ 자바스크립트(JavaScript) ] section07 - 5 - Least Recently Used(카카오 캐시 문제 변형) 📍 section07 - 5 - Least Recently Used(카카오 캐시 문제 변형) 간략한 문제 설명: LRU 알고리즘은 가장 최근에 사용되지 않은 것의 의미를 가지고 있다. 만약, Cache Miss일 땐 다음 task가 cache의 맨 앞에 오고 모든 작업이 뒤로 밀리고, Cache Hit 일 땐 다음 task와 동일한 cache안에 있는 값을 맨 앞으로 당겨오고 나머지는 한 칸씩 뒤로 미루는 문제이다. 예를 들어 현재 cache가 [1, 2, 3, 0, 0]이고 다음 task는 2라면 [2, 1, 3, 0, 0, 0]이 된다. 이 문제는 삽입 정렬의 특징인 target을 temp에 저장하고 temp보다 arr[i]=arr[i-1]처럼 덮어 씌우는 방식을 이용하면 풀 수 있는 문제이다. 중요.. 2021. 9. 10.