본문 바로가기

Coding Test28

Greedy 개념 그리디 알고리즘은 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법론으로 각 단계에서 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘이다.이때, 항상 최적의 값을 보장하는 것이 아니라 최적의 값의 근사한 값을 목표로 하고 있다.주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적해를 구한 뒤 이를 결합하여 전체 문제의 최적해를 구하는 경우에 주로 사용된다. 근시안적인 방법론이란 단기적인 목표를 중심으로 한 전략적인 방법을 의미한다. 이 방법론은 주로 현재의 문제를 해결하는 데 초점을 맞추며, 장기적인 전망보다는 단기적인 성과를 중요시한다. 아래 그림을 예시로 보자.BestGreedy각 노드들의 합이 가장 큰 경우를 고르라하면 왼쪽 그림과.. 2024. 6. 13.
[Greedy] 단속카메라 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42884 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코드 1 (실패)def solution(routes): route = sorted(routes) camera = -30000 s=0 for start,end in route: if start > camera: camera = end s+=1 return s뭔가 반례가 있었나 보다.아래 그림으로 다시 직관적으로 이해를 .. 2024. 6. 13.
[Greedy] 섬 연결하기 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42861 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코드n = 4costs = [[0,1,1],[0,2,2],[1,2,5],[1,3,1],[2,3,8]]# return 4def solution(n,costs): parent = [0] * (n + 1) cost = sorted(costs,key=lambda x:x[2]) # cost순으로 오름차순 정렬 result = 0 # 부모 테이블상에서, 부모를 자기 자신으로 초기화 .. 2024. 6. 13.
[Greedy] 구명보트 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코드 1 (실패)def solution(people, limit): p = sorted(people) s=0 for i in range(len(p)-1): if p[i]+p[i+1] 이용 가능한 구명보트 개수만 구하는 거니까 효율성을 위해 people을 정렬한다.2개씩 비교해서 더한 값이 limit보다 작거나 같으면 짝 지어지므로 s에 1을 더한다.전체 people .. 2024. 6. 13.
[Greedy] 큰 수 만들기 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코드 1 (실패)from itertools import combinationsdef solution(number, k): num = [i for i in number] pos = [] answer=[] for i in range(len(num)): p=list(combinations(num,len(num)-k)) for i in p: pos.a.. 2024. 6. 13.
[Greedy] 체육복 문제: https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코드def solution(n, lost, reserve): set_lost = set(lost)-set(reserve) set_reserve = sorted(set(reserve)-set(lost)) for i in set_reserve: if i-1 in set_lost: set_lost.remove(i-1) elif i+1 in .. 2024. 6. 13.