본문 바로가기

greedy5

[Programmers] (탐욕법(Greedy)) Lv 2. 큰 수 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr #include #include #include #include using namespace std; string solution(string number, int k) { string answer = ""; int start = 0, cnt = number.length() - k; while (answer.length() != cnt) { // end에서 구해야 할 남은 개수만큼 뺀 영역까지 최.. 2023. 7. 27.
[Programmers] (그리디. Greedy) Lv 2. 광물 캐기 https://school.programmers.co.kr/learn/courses/30/lessons/172927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 곡괭이를 어떤 순서로 사용하든, 캐는 광석의 양은 동일하다. 그저 사용 순서에 따라 피로도가 달라질 뿐이다. 그렇다면 'N = 광석의 총 개수', 'M = 총 곡괭이의 개수'라고 했을 때, [0, min(N, 5M) - 1] 범위의 광석을 순서대로 캐게 될 거란 건 변함이 없다. 그리고 어떤 곡괭이를 사용하면 무조건 5개를 연속으로 캐야 하니까 5개씩 묶음으로 생각해 볼 수 있다. 아래 예제로... 2023. 4. 18.
[Algorithm] 탐욕 알고리즘 (Greedy Algorithm) 탐욕 알고리즘(Greedy Algorithm) Greedy는 ‘탐욕스러운, 욕심 많은’ 이란 뜻이다. 탐욕 알고리즘은 말 그대로 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다. 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법이다. 탐욕 알고리즘은 여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달한다. 순간마다 하는 선택은 그 순간에 대해 지역적으로는 최적이지만, 그 선택들을 계속 수집하여 최종적(전역적)인 해답을 만들었다고 해서, 그것이 최적이라는 보장은 없다. 하지만 탐욕 알고리즘을 적용할 수 있는 문제들은 지역적으로 최적이면서 전역적으로 최적인 문제들이다. 탐욕 알.. 2023. 3. 13.
[Programmers] (탐욕법(Greedy)) Lv 2. 큰 수 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(number, k) { return [...number].reduce((stack, el, idx) => { while (stack && stack.at(-1) 0) { stack.pop(); --k; } stack.push(el); return (k > 0 && idx === number.length - 1) ? stack.slice(0, s.. 2023. 2. 25.
[Programmers] (탐욕법[Greedy]) Lv 2. 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(people, limit) { var answer = 0; people.sort((a, b) => b - a); for (let i = 0, j = people.length - 1; i = people[i] + people[j]) { ++answer; --j; } else ++answer; } return answer; } GitHub : https://github.. 2023. 1. 17.