2024/07/17 3

[알고리즘] 그리디 알고리즘 (Greedy Algorithm)

그리디 알고리즘? 최적해를 구하는 데 사용되는 알고리즘의 한 유형으로 문제를 해결하는 과정에서 현재 상황에서 가장 좋다고 생각되는 선택을 반복적으로 하는 방식이다.즉 전체적인 최적해를 고려하지 않고 현재 단계에서 가장 좋은 선택을 하는 것을 반복하여 최종적인 해결책을 찾는 알고리즘이다.이 알고리즘은 각 단계에서의 최적 선택이 결국 전체 문제에 대한 최적 해결책을 보장할 수 있을 때 유효하다.  특징탐욕적 선택 속성 (Greedy Choice Property): 각 단계에서 현 시점에서 가장 최적인 선택을 한다.최적 부분 구조 (Optimal Substructure): 문제의 최적 해결 방법이 부분 문제들의 최적 해결 방법으로 구성될 수 있다.장점간단하고 직관적: 구현이 간단하고 이해하기 쉬운 편빠른 수행..

알고리즘 2024.07.17

[Python] 16435번 스네이크버드

✏️ 문제 문제 파악배열을 정렬하면 쉽게 풀 수 있는 문제이다. 과일의 높이를 넣은 배열을 정렬한 후에 과일의 높이와 스네이크버드의 길이가 같으면 먹을 수 있기 때문에 길이 += 1 하고 아니면 break 해서 스네이크버드의 길이를 출력하는 방향으로 코드를 짰다. 알고리즘그리디 알고리즘정렬  코드n, l = map(int, input().split())apple = list(map(int, input().split()))apple.sort()for i in range(len(apple)): if apple[i] > l: break else: l += 1print(l)

PS/백준 2024.07.17

[Python] 1417번 국회의원 선거

✏️ 문제 문제 파악득표수 배열을 A로 가정하자. 처음엔 if max(A) > A[0] 이라는 조건문이 true면 최댓값을 가지고 있는 후보의 득표수를 -1 하고 A[0]에 득표수 +1, 매수해야 하는 사람수 +1 하는 방향으로 코드를 짰다.이렇게 짜니 무한루프를 돌고 있었고 생각해보니 다솜이가 원하는 A[0]이 배열의 최댓값이 되면 A[0]의 값이 계속 -1, +1, -1, +1 을 반복하게 되기 때문이었다. 그래서 max(A) == A[0] 라는 조건문을 사용하여 코드를 새로 짜니 해결되었다.또한 최대 득표수를 가지고 있는 후보에 A[0]가 있으면서 (and) 여러 후보라면 1명만 매수하면 되므로 매수해야 하는 사람을 +1 해주었다. 알고리즘그리디 알고리즘구현자료 구조시뮬레이션우선순위 큐  코드n =..

PS/백준 2024.07.17