본문 바로가기

전체 글

[BOJ] 9938 방청소 문제 설명 및 풀이 : http://www.secmem.org/blog/2022/01/16/How_to_approach_problems_7/ 주의할 점 : 부모 배열을 p[x] = -1 로 초기화하는 것보다 p[x] = x 로 초기화하면 메모리 초과가 발생하지 않는다. #include using namespace std; int N,L; bool A[300010]; // 0 empty, 1 full int p[300010]; int find(int x){ if(p[x] == x) return x; return p[x] = find(p[x]); } bool Union(int u, int v){ u = find(u); v = find(v); if(A[u] && A[v]) return false; else i.. 더보기
유클리드 호제법, 모듈로 역원 이 사이트에 설명이 잘 되어있고 공부하기 쉽다. https://ko.khanacademy.org/computing/computer-science/cryptography/modarithmetic/a/the-euclidean-algorithm 유클리드 호제법 (개념 이해하기) | 모듈로 연산 | Khan Academy ko.khanacademy.org https://modoocode.com/313 추가로 볼 만한 자료 컴파일러는 정수 나눗셈을 어떻게 최적화 할까? modoocode.com A ≡ B(mod C) 인 것은 즉 A mod C = B mod C , A와 B는 값이 같은 동치류 동치관계 : 반사성, 대칭성, 추이성 성질 : (A+B) mod C = (A mod C + B mod C) mod C (A.. 더보기
13335 트럭 트럭 13335번: 트럭 입력 데이터는 표준입력을 사용한다. 입력은 두 줄로 이루어진다. 입력의 첫 번째 줄에는 세 개의 정수 n (1 ≤ n ≤ 1,000) , w (1 ≤ w ≤ 100) and L (10 ≤ L ≤ 1,000)이 주어지는데, n은 다리를 건너는 트 www.acmicpc.net 문제 : 트럭이 차례대로 다리에 오를 때, 다리가 버틸 수 있는 하중을 고려하여 트럭이 모두 다리를 건너는 시간을 구하시오. 다리 한 단위를 가는 데 걸리는 시간은 1 단위이다. 풀이 : 시뮬레이션을 통해 시간을 1씩 늘려가면서 구할 수 있다. 각각의 트럭이 다리에 올라가는 시간과 트럭이 다리에서 내려가는 시간( = 올라가는 시간 + 다리의 길이)만을 알 수 있다면, 시뮬레이션 하지 않고 O(n)의 시간에 해결.. 더보기
9345 디지털 비디오 디스크 https://www.acmicpc.net/problem/9345 9345번: 디지털 비디오 디스크(DVDs) 손님이 DVD를 카운터에 가져왔을 때 손님이 원하는 DVD가 전부 존재하면, (A번 선반부터 B번 선반까지에 있는 DVD를 전부 가져왔을 때 순서에 상관없이 A번 DVD부터 B번 DVD까지 있다면) "YES"를 출력하 www.acmicpc.net A ~ B 번까지 선반에 A~B 번 비디오(순열)가 순서에 상관없이 존재함은 A B선반 구간에서 최솟값이 A이고 최대값이 B인 것인 것과 같다. #include using namespace std; using ll = long long; const ll n_= 3e6+100; ll n,m,tc,a,b,c,k; ll min_tree[n_],max_tree.. 더보기
C++ 레퍼런스 (ECHMAScript syntax )구경과 백준 1774 https://cplusplus.com/reference/regex/ - C++ Reference cplusplus.com ECHMAScript syntax Regular operation does : pattern - matching - target sequence But the regex syntax allows for special characters and expressions in the pattern: Special pattern characters : \d : digit \D : not digit \character Quantifiers * + ? : 0 or 1 {int} : The preceding atom is matched exactly int times {int,} :The prec.. 더보기
2250 트리의 너비와 높이 트리의 너비는 순회를 이용해서 구했고, 높이는 순회하면서 depth 배열에 높이를 저장해서 구했다. 주의할 점은 루트 노드가 1이 아니다! #include using namespace std; struct node {int l, r,col;} arr[10010]; int a = 1,root; int N, res1, res2; int depth[10010]; bool isRoot[10010]; void search(int n, int lev){ if(n == -1) return; depth[n] = lev; search(arr[n].l, lev + 1); arr[n].col = a++; search(arr[n].r,lev+1); } int main() { ios::sync_with_stdio(0);cin... 더보기
가르침 보호되어 있는 글입니다. 더보기
2252 https://www.acmicpc.net/problem/2252 2252번: 줄 세우기 첫째 줄에 N(1 ≤ N ≤ 32,000), M(1 ≤ M ≤ 100,000)이 주어진다. M은 키를 비교한 회수이다. 다음 M개의 줄에는 키를 비교한 두 학생의 번호 A, B가 주어진다. 이는 학생 A가 학생 B의 앞에 서야 한다는 의 www.acmicpc.net #include #include #include using namespace std; int N,K; int in_dg[32010]; vector v[32010]; void solve(){ while(true){ priority_queue pq; for(int i=1;iu>>x; in_dg[x]++; v[u].push_back(x); } solve(); .. 더보기