본문 바로가기

Python3

백준 3665번: 최종 순위 - 위상 정렬로 순위 결정하기 https://www.acmicpc.net/problem/3665📌 문제 개요ACM-ICPC 대회에서 작년 순위와 올해 변경된 팀 쌍만 주어졌을 때, 올해의 최종 순위를 결정하는 문제입니다.핵심 요구사항:작년 완전한 순위가 주어짐올해는 순위가 바뀐 팀 쌍만 제공가능한 결과: 유일한 순위 / 불확실한 순위(?) / 모순(IMPOSSIBLE)🎯 위상 정렬(Topological Sort)이란?개념 정의위상 정렬은 방향 그래프에서 모든 방향 간선의 순서를 지키면서 정점들을 나열하는 방법입니다.간단히 말해, A → B 간선이 있다면 결과에서 A가 B보다 앞에 나와야 합니다.실생활 예시대학 수강 신청을 생각해보세요:프로그래밍기초 → 자료구조 → 알고리즘 ↘ 데이터베이스위상 정렬 결과:.. 2025. 8. 5.
파이썬 heapq.heapreplace 동작 원리 파이썬 heapq.heapreplace 동작 원리heapreplace는 파이썬의 heapq 모듈에서 제공하는 유용한 함수로, 힙의 최솟값을 제거하고 새로운 값을 넣은 뒤, 힙을 재정렬하여 항상 최소 힙(min heap)의 조건을 유지하는 함수다.📌 기본 개념heapreplace(heap, item)은 다음과 같은 동작을 한다:힙의 루트(가장 작은 값)를 제거한다.새로운 값을 루트 자리에 넣는다.힙 조건(부모 📊 힙 구조 시각화 예제다음은 heap = [1, 3, 5, 7, 9, 11]일 때 heapreplace(heap, 2)가 어떻게 작동하는지 단계별로 나타낸 것이다.1️⃣ 초기 힙 구조 1 / \ 3 5 / \ \ 7 9 11 2️⃣ 루.. 2025. 4. 12.
🐨BOJ#1697 숨바꼭질]🙄BFS(feat. collections) 문제 보기 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 아이디어 딱 봐도 dp로 풀 수 있을 것 같지만... 머리가 아파서(=어려워서) 수빈이가 도착할 수 있는 위치가 분기로 갈라지는 트리를 만들어서 풀기로 했다. 가장 적은 횟수(빠른 시간)에 동생을 찾아야 하기 때문에, 트리의 깊이가 가장 얕은 게 정답이다. 그래서 dfs로 탐색한 뒤 깊이를 비교하는 것 보다 bfs를 사용해야 한다고 생각했다. 그리고 분기.. 2024. 3. 29.