Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/

문제 https://www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 풀이 solved.ac 난이도: Gold 4 조금 특이한 DFS문제였다. 해당 문제에서 팀이 결성되기 위해서는 서로 선택한 학생들끼리의 사이클이 만들어져야 한다. 이 사이클은 자기 자신을 선택하는 것도 인정한다. 예를 들어 아래와 같은 입력에서 선택 관계를 그려보자. 학생 번호: 1, 2, 3, 4, 5 선택 번호 3, 4, 4, 5, 3 이때 사이클을 구성하는 것은 3->4->5(->3)이다. ..
*문제들의 난이도 분류는 종만북 혹은 solved.ac 출처임을 밝힙니다.* ★ 문제는 작성자가 다시 풀어보고 싶은 문제 혹은 어려웠던 문제입니다. +가 붙은 문제는 해당 문제에서 중요하게 생각하는 부분입니다. 분리 집합의 구현을 위한 유니온 파인드 해설 유니온-파인드(Union-Find), 분리 집합 ([백준] 1717 - 집합의 표현) - Gold4 문제 목록 [알고스팟] 에디터 전쟁(EDITORWARS)★ - 중 [백준] 친구 네트워크(4195) - Gold 2 [백준] 개구리 점프(17679)+ 스위핑 - Gold 3 [백준] 트리(13306) + 오프라인 알고리즘 - Platium 5

문제 https://www.acmicpc.net/problem/13306 13306번: 트리 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 트리의 정점의 개수와 질의의 개수를 나타내는 두 정수 N과 Q (1 ≤ N, Q ≤ 200,000)가 주어진다. 다음 N-1개의 줄의 i번째 줄에는 정점 i+1의 부 www.acmicpc.net 풀이 solved.ac 난이도: Platium 5 해당 문제에서 오프라인 알고리즘으로 해결해도 된다는 것을 알아차리는 게 중요했다. 온라인 알고리즘은 대부분의 문제들에서 원하는 출력 방식으로, 입력으로 답을 할 쿼리(질의)가 주어지면 바로 다음 줄에 답을 출력해주어야 한다. 온라인 알고리즘에서는 모든 입력 데이터를 가지지 않은 상태에서의 실시간 입출력이 중요하다. 오프..

문제 www.acmicpc.net/problem/17619 17619번: 개구리 점프 첫 번째 줄에 통나무 개수 N과 질문의 개수 Q가 주어진다. 다음 N개의 줄에 각 통나무에 x1, x2, y의 세 정수 좌표가 주어진다. 주어진 통나무는 두 점 (x1, y)와 (x2, y)를 잇는 형태이다. (x1 < x2) 모든 www.acmicpc.net 풀이 solved.ac 난이도: Gold 3 정렬과 분리 집합(Disjoint set)으로 해결하는 문제이다. 이번 문제의 분리 집합의 구현에 사용하는 Union-Find(유니온-파인드) 자료구조에 대해서는 아래 게시글에 정리해두었다. 유니온-파인드(Union-Find), 분리 집합 이번 문제에서는 점프로 이동 가능한 통나무들을 한 집합으로 묶어 서로 이동 가능한..
문제 https://www.acmicpc.net/problem/4195 4195번: 친구 네트워크 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스의 첫째 줄에는 친구 관계의 수 F가 주어지며, 이 값은 100,000을 넘지 않는다. 다음 F개의 줄에는 친구 관계가 생긴 순서대로 주어진 www.acmicpc.net 풀이 solved.ac 난이도: Gold 2 Union-Find(유니온 파인드)에 map자료구조를 적용하면 간단히 해결할 수 있는 분리 집합(DisJoint Set) 문제였다. 분리 집합을 구현하는 데 사용하는 기본적인 Union-Find(유니온 파인드) 자료구조에 대해서는 아래의 게시글을 참고하자. 유니온-파인드(Union-Find), 분리 집합 이번 문제에서는 노드의 번호가 아..
가장 기본적인 분리 집합(Disjoint Set)을 구현하면 풀 수 있는 문제를 통해 유니온-파인드(Union-Find) 자료구조 살펴보자. 문제 www.acmicpc.net/problem/1717 1717번: 집합의 표현 첫째 줄에 n(1 ≤ n ≤ 1,000,000), m(1 ≤ m ≤ 100,000)이 주어진다. m은 입력으로 주어지는 연산의 개수이다. 다음 m개의 줄에는 각각의 연산이 주어진다. 합집합은 0 a b의 형태로 입력이 주어진다. 이는 www.acmicpc.net 풀이 solved.ac 난이도: Gold 4 가장 기본적인 분리 집합(Disjoint Set)을 구현하면 풀 수 있는 문제. 분리 집합은 유니온-파인드(Union-Find) 자료구조를 사용하여 구현할 수 있다. 유니온-파인드는..

문제 https://algospot.com/judge/problem/read/EDITORWARS algospot.com :: EDITORWARS 에디터 전쟁 문제 정보 문제 에디터 전쟁은 가장 유명한 자유 소프트웨어 텍스트 편집기인 vi와 Emacs 중 어느 쪽이 더 우월한가를 놓고 인터넷에서 자주 벌어지는 논쟁을 말합니다. 이 논쟁에 참 algospot.com 풀이 종만북 난이도: 중 분리 집합(Disjoint Set, 종만북에서는 상호 배타적 집합으로 해석되어 있다.) 문제는 처음이라 상당히 애먹었다. 분리 집합 문제들에서 사용하는 자료구조인 유니온-파인드(Union-Find)를 적절히 수정해서 풀어야 하는 문제이다. 파티에 올 수 있는 사람수를 구하기 위해 집합의 크기를 저장하는 것은 set_siz..

문제 https://www.acmicpc.net/problem/2934 2934번: LRH 식물 상근이는 유전자 조작을 통해 줄기 두 개로 이루어진 식물을 만들었다. 이 식물은 줄기의 x좌표 L, R과 높이 H로 나타낼 수 있다. 아래 그림은 L=2, R=5, H=4인 식물이다. 상근이는 매일 매일 화단에 www.acmicpc.net 풀이 solved.ac 난이도: Platium 4 느리게 갱신되는 세그먼트 트리로 풀 수 있는 문제이지만 원소를 다르게 표현하는 펜윅 트리로도 해결할 수 있다. 문제에서 식물의 높이는 항상 이전의 식물들보다 크다. 따라서 이전의 식물들의 구평 선분과 현재 식물의 수직 선분과의 교차점이 꽃이 피는 개수이다. 수평 선분을 구간이라고 생각해보자. 트리에서 해당 구간의 값들을 모두..

Fenwick Tree 펜윅 트리 기존의 펜윅 트리에 대해서는 깔끔하게 설명하신 백준님의 게시글을 보고 오자. 펜윅 트리 (바이너리 인덱스 트리) - BaekJoon 펜윅 트리는 세그먼트 트리와는 다르게 부분 합(첫 원소에서 부터 i개의 값)을 계산하는데 특화되었다.(이 특징이 가장 중요합니다!!!) 백준 님이 설명한 펜윅 트리에서는 점 업데이트(Point Update)와 구간 쿼리(Range query)가 가능하다. 따라서 [L,R]구간의 구간합은 [1,R]까지의 합(pSum(R) ) - [1,L-1]까지의 합( pSum(L-1) )으로 구할 수 있다. 하지만 원소의 업데이트는 한 개씩만 진행할 수 있다. 따라서 백준 - 수열과 쿼리 21(16975) 문제와 같은 구간의 업데이트를 요구하는 문제는 일일..
문제 https://www.algospot.com/judge/problem/read/MEASURETIME algospot.com :: MEASURETIME 삽입 정렬 시간 재기 문제 정보 문제 유명한 정렬 알고리즘인 삽입 정렬은 정렬된 부분 배열을 유지하며 이 배열에 새 원소를 삽입해 나가는 식으로 동작합니다. 주어진 정수 배열 A를 정렬하는 www.algospot.com 풀이 종만북 난이도: 중 세그먼트 트리와 같은 기능을 하지만 비트 연산을 이용해 좀 더 간단히 구현이 가능한 펜윅 트리(Fenwick Tree) 혹은 이진 인덱스 트리(binary indexed tree)로 해결하는 문제이다. 펜윅 트리는 세그먼트 트리와는 다르게 부분 합(첫 원소에서 부터 i개의 값)을 계산하는 데 특화되어 있다. 만..