♟️ 알고리즘 117

[Python][백준] 11286. 절댓값 힙 / 우선순위 큐(S1)

🔗링크 :  https://www.acmicpc.net/problem/11286🗒️파이썬 코드 풀이import sysimport heapqinput = sys.stdin.readlineN = int(input())heap = []for _ in range(N): num = int(input()) if num == 0 : if heap: print(heapq.heappop(heap)[1]) pass else : print(0) else: heapq.heappush(heap,(abs(num),num)) 1. 최대, 최소 관련된 문제가 나오면 heap을 생각해봐야한다. 2. 조건에 따라 he..

[Python][백준] 11053. 가장 긴 증가하는 부분 수열/ DP (S2)

🔗링크 :  https://www.acmicpc.net/problem/11053🗒️파이썬 코드 풀이N = int(input())lst = list(map(int,input().split()))dp = [1] * N for i in range(1,len(lst)): for j in range(i): if lst[i] > lst[j] : dp[i] = max(dp[i],dp[j]+1)print(max(dp)) 1. 이전 값들은 계속 다음 값들에 영향을 주기 때문에 DP를 생각한다.  2. 브루트포스 방식으로 하나 하나 조사를 하고, 자신보다 작은 경우 dp 값을 갱신해준다. 3. 갱신 할 때, 가장 큰 값들만 갱신되게 하면 되므로 max 함수를 이용한다.  4. 이후..

[Python][백준] 11866. 요세푸스 문제 0 / 구현,큐(S4)

🔗링크 :  https://www.acmicpc.net/problem/11866🗒️파이썬 코드 풀이from collections import dequeN,K = map(int,input().split())res = []q = deque([i for i in range(1,N+1)])while q : for _ in range(K-1): q.append(q.popleft()) res.append(q.popleft())print('',end="") 1. 이 문제 같은 경우 queue로 간단하게 풀 수 있다. 2. K-1번 만큼 큐의 맨 앞 부분을 빼서 뒤에 붙여준다.  3. 그리고 K 번째 수를 제거해준다.  4. queue가 완전히 사라질 때 까지 반복한다.   🔎 내 풀이..

정렬 알고리즘 (삽입,선택,버블,셸,퀵,힙,병합 정렬)

✨ 정렬 알고리즘  크래프톤 정글에서 퀵 정렬에 대해서 쪽지 시험이 나왔다. 퀵 정렬을 공부하면서 다른 정렬 방법에 대해서도 궁금증이 생겼고, 책과 블로그들을 참고하면서 정리 해보았다.  🔖 Insertion sort (삽입 정렬) 삽입 정렬은 손안의 카드를 정렬하는 방법과 유사하다.  새로운 카드를 기존 정렬된 카드 사이 올바른 위치에 삽입한다. key 값은 2번째 인덱스부터 시작되며, key 값이 자료의 길이만큼 이동되면 정렬이 완성된다.   특징 : 1. 안전한 정렬 방법이다. (바로 옆의 데이터와 비교 )→ 안전하다는 것을 동일한 값을 가진 원소들의 상대적인 순서가 유지되는 것을 의미2. 이미 정렬되어 있는 경우나 자료의 수가 적을 경우 구현이 간단3. 비교적으로 많은 레코드들의 이동이 필요하다..

[Python][백준] 2468. 안전 영역/ DFS,BFS (S1)

🔗링크 :  https://www.acmicpc.net/problem/2805 🗒️파이썬 코드 풀이from collections import dequeN = int(input())graph = [list(map(int,input().split())) for _ in range(N)]mn = min(map(min,graph))mx = max(map(max,graph))di,dj = [0,1,0,-1],[1,0,-1,0]mx_count = 1count = 0 for c in range(mn,mx+1) : count = 0 visited = [[0] * N for _ in range(N)] for i in range(N): for j in range(N): ..