Algorithms 5

[Greedy] 미적으로 아름다운 나무

카카오모빌리티 코딩테스트 문제 복기 그리디 알고리즘 구간 Min, Max 미적으로 아름다운 나무숲을 가꾸길 좋아하는 사람이 있다. 이 사람의 미적으로 아름답다는 것의 정의는 다음과 같이 '나무의 높낮이가 연속되지 않고 번갈아 나타남'으로 한다. 미적으로 아름다운 나무숲을 만들기 위해 오직 하나의 나무만을 없앨 수 있다고 하자. 나무의 높이가 정수의 배열로 주어졌을 때 아름다운 나무숲을 만들기 위한 방법의 가짓수를 구하여라. - 아름다운 나무숲을 만들 수 없는 배열이면 -1을 리턴한다. - 이미 아름다운 나무숲이라면 0을 리턴한다. ex. [3, 4, 5, 1, 2] 1. 3을 지워서 [4, 5, 1, 2] 를 만들 수 있다. 2. 4를 지워서 [3, 5, 1, 2] 를 만들 수 있다. 3. 5를 지워서 ..

Algorithms 2022.10.28

[Deep Dive] QuickSort

Introduction to Algorithms 3판 연습문제 pg.180 7.2-5 퀵 정렬이 모든 단계에서 1-a 대 a의 비율로 분할한다고 하자. 여기서 0 1/100n -> ... 1까지 도달했을 때 이 가지 부분의 높이를 k라 하는 것) 트리의 단계는 a에 비례하여 k단계만큼 내려간 후 1에 도달한다고 했을때, a^k*n = 1 로 이를 표현할 수 있다. 따라서, k = loga(1/n) = -log(n)/log(a)이다. 최대 깊이는 항상 더 큰 하위 문제들을 처리하는 것이다. 그렇다면 동일한 논리로 -log(n)/log(1-a)를 얻을 수 있다. 7.2-6 0

Algorithms 2020.12.02

[프로그래머스] 연습문제 - 기능개발

programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr ✨ 문제 이해하기 - 기능은 진도가 100%일 때 서비스에 반영할 수 있다. - 각 기능의 개발속도는 다르다. 앞의 기능과 뒤의 기능의 완성 시점이 다름. - 먼저 배포되어야 하는 순서대로 progresses 라는 배열에 담겨져서 작업이 주어짐. 배열에 담긴 숫자는 작업의 진도. - 작업 개발 속도는 speeds 라는 배열에 담겨져서 주어짐. - 몇 개의 기능이 배포되..

Algorithms 2020.11.30

[프로그래머스] 연습문제 - 주식가격

programmers.co.kr/learn/courses/30/lessons/42584 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00 programmers.co.kr 문제 요약 prices 정수 배열이 주어진다. 각 요소는 1 이상, 1만 이하인 자연수. 배열의 길이는 2 이상 10만 이하. ex. [1, 2, 3, 2, 3] 각 요소는 주식 가격. 주식 가격이 떨어지지 않은 기간은 몇 초인지 return 하자. ex1) 예시 배열 [1, 2, 3, 2, 3] 을 보면, 1-2-3-2-3 1 보다 ..

Algorithms 2020.11.30