본문 바로가기

반응형

전체

2020년 12월 공부일지 & 2020년 회고 & 2021년 계획 1. 12월 공부 일지 [푼 문제] 1. BOJ 90문제 (918 solved) 2. Codeforces 9회 참여 (Rating 1928 -> 1928 / (부계) Rating 1565 -> 1757) - Round #688 (Div. 2) / Global round 12 / Round #689 (Div. 2) / Edu Round 100 / Round #691 (Div. 2) / Round #692 (Div. 2) / Edu Round 101 / Good Bye 2020 - virtual participant : Round #690 (Div. 3) 3. Atcoder 2회 참여 (Rating 1254 -> 1314) - ABC 185 / ABC 186 4. INU 코드페스티벌 2020 Open Con..
PS를 위한 정수론 - (2) 유클리드, 확장 유클리드 호제법 [목차] 1. 유클리드 호제법 2. 확장 유클리드 호제법 3. 모듈러(modular) 연산에서의 곱셈의 역원 4. 예시 문제 1. 유클리드 호제법 유클리드 호제법은 정수론을 조금이라도 공부했다면, 혹은 공부하지 않았더라도 충분히 들어봤을 것이다. 유클리드 호제법은 자연수 $a$, $b$ 가 주어졌을 때, $gcd(a, b)$ 즉, $a$와 $b$의 최대 공약수를 구하는 방법이다. $a$를 $b$로 나눈 몫을 $q$라고 하고, 나머지를 $r$이라고 하면 $a = bq + r$ 로 나타난다. 이때, $gcd(a, b) = gcd(b, r)$을 만족한다. 이유는 $gcd(a, b) = g$라고 하면, $g|a$, $g|b$ 를 만족하게 되고, $r = a - bq$이므로 $g|(a - bq) = r$ 을 만족..
PS를 위한 정수론 - (1) 에라토스테네스의 체 활용 기본적인 '에라토스테네스의 체' 개념을 아직 모른다면 wogud6792.tistory.com/46 글을 먼저 읽는 것을 추천한다. 크게 어렵지는 않다. 그렇다면 이제 이 에라토스테네스의 체를 활용하는 여러 가지 방법들을 알아보자. 1. 각 2부터 n까지의 자연수 k에 대해, "k가 갖는 가장 작은 소인수"를 계산하는 방법 이는 사실 매우 간단하다. 에라토스테네스의 체 원리를 생각해보면 현재 수가 아직 걸러지지 않았다면 소수이고, 현재 수의 배수들을 제거해나가는 방식이다. 이때, 제거되는 수는 합성수이고 제일 처음 제거될 때 이용되는 소수가 $k$가 갖는 가장 작은 소인수이다. int prime[1000001]; int main(void) { int N = 1000000; for (int i = 1; i
[BOJ 20190] 버블버블 [문제] www.acmicpc.net/problem/20190 20190번: 버블버블 여러분은 N개의 정수 A1, · · · , AN을 버블 정렬(bubble sort)를 이용하여 단조증가하도록 (감소하지 않는 순서가 되도록) 정렬하려고 한다. 주어진 정수들 중에는 같은 값이 있을 수 있다. 버블 정렬 www.acmicpc.net [난이도] - Platinum II (20.12.28 기준) [필요 개념] - Lazy Propagation - Segment Tree / Fenwick Tree [풀이] 올해 koi 중등부 2차 문제이다. 중등부에 이런 난이도 문제가 나온다는 거에 한 번 놀랐고, 이 문제 만점자가 4명이나 된다는 거에 두 번 놀랐다. 이 문제를 보고 lazy propagation을 떠올리기도..
[알고리즘] Lazy Propagation (Segment / Fenwick Tree) [목차] 1. Lazy Propagation이란? 2. Lazy Propagation with Segment Tree 3. Lazy Propagation with Fenwick Tree 4. Lazy Propagation 예시 문제 1. Lazy Propagation이란? 혹시 세그먼트 트리(Segment Tree)와 펜윅 트리(Fenwick Tree)에 대해서 잘 모른다면 이 자료구조들에 대해서 학습한 후, 이 글을 보는 것을 권장한다. 세그먼트 트리나 펜윅 트리는 원소의 update가 있는 경우에 구간합을 빠르게 구해주기 위해서 사용한다. 한 원소의 update는 O(logN)만큼의 시간이 걸리고, 구간합 또한 O(logN)만큼의 시간이 걸리기 때문에 Q를 쿼리의 개수라고 하면 보통 O(QlogN) ..
900 문제 & 다이아 달성 플래티넘보다 더 많은 사람들이 자신이 뉴비라고 말하는 다이아 티어에 도달했다. 나도 이제 뉴비(?)다...! 티어가 다이아지만 다이아 문제를 2개밖에 못풀었다. 사실 저 두문제도 금광, FFT라서 아마 지금 다시 풀면 못풀 확률이 높다. 다이아 문제를 혼자서 어떻게 푸는지..... 다들 대단하다.
[BOJ 17353] 하늘에서 떨어지는 1, 2, ..., R-L+1개의 별 [문제] www.acmicpc.net/problem/17353 17353번: 하늘에서 떨어지는 1, 2, ..., R-L+1개의 별 욱제의 은밀한 취미 중 하나는 매일 밤하늘을 감상하는 것이다. 😓 욱제는 하늘의 별들이 다음과 같은 규칙들을 따르며 떨어지는 걸 관찰했다. 별이 떨어지는 위치는 N개의 점이다. 점은 순 www.acmicpc.net [난이도] - Platinum II (solved.ac 20.12.22 기준) [필요 개념] - Lazy Propagation with Segment Tree - Fenwick Tree 디스크립션은 간단하다. 두 종류의 쿼리가 들어오고, 한 쿼리는 구간 [L, R]에 순서대로 1, 2, ..., R-L+1을 더해준다. 나머지 한 쿼리는 X번째 원소의 값을 출력해준..
Codeforces Round #690 (Div. 3) 풀이 A. Favorite Sequence 입력으로 문제의 그림과 같이 위치가 바뀐 수열이 들어온다. 다시 원래의 수열을 출력해주면 된다. (처음엔 바뀐 수열을 출력하라는 줄 알았다. 꽤나 비슷한 실수를 한 사람들이 많은 것 같다) #include using namespace std; int A[301]; int main(void) { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); int T; cin >> T; while (T--) { int n; cin >> n; for (int i = 1; i > A[i]; for (int i = 1; i