본문 바로가기

algorithm

(198)
[BOJ] 1461번 도서관 (C++) https://www.acmicpc.net/problem/1461 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net #include #include #include #include using namespace std; bool compare(int a, int b){ return a > b; } int main() { int n, m, p, res = 0; vector book_l; vector book_r; cin >> n >> m; for(int i = 0; i > p; if(p < ..
[BOJ] 11652번 카드 (C++) https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지 www.acmicpc.net #include #include #include using namespace std; int main() { int n; long long k; vector v; cin >> n; for(int i = 0; i > k; v.push_back(k); } sort(v.begin(), v.end()); int t = 0; int max = 0; long long ans..
[BOJ] 2630번 색종이 만들기 (C++) https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다. www.acmicpc.net #include using namespace std; int n; int paper[129][129]; int w_cnt = 0, b_cnt = 0; void divconquer(int x, int y, int v){ int cnt = 0; for(int i = x; i < x + v; i++){ for(int j = y; j < y + v; j++){ if(paper[..
[BOJ] 1697번 숨바꼭질 (C++) https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net #include #include #include using namespace std; int n, v; int map[1001][1001]; int visit[1001]; void reset() { for (int i = 1; i > n1 >> n2; map[n1][n2] = map[n2][n1] = 1; } dfs(); reset(); bfs(); return 0; }..
[BOJ] 1931번 회의실 배정 (C++) https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net #include #include #include using namespace std; bool compare(pair& a, pair& b){ if(a.second == b.second) return a.first > n; vector v; for(int i = 0; i > a >> b; v.push_back({a, b}); } sort..
[BOJ] 6068번 시간 관리하기 (C++) https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기 성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1 b.second; } int main() { int n, t, s, time; vector v; cin >> n; for(int i = 0; i > t >> s; v.push_back({t, s}); } sort(v.begin(), v.end(), compare); time = v[0].second - v[0].first; for(int i = 1; i < n; i++){ if(time < v[i].second) time -= v[i].first; else { time = v[i].seco..
[BOJ] 1263번 시간 관리 (C++) https://www.acmicpc.net/problem/1263 1263번: 시간 관리 진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다. 진영 www.acmicpc.net #include #include #include using namespace std; bool compare(pair& a, pair& b) { return a.second > b.second; } int main() { int n, t, s, tmp = 0, left = 0; cin >> n; vector v(n); for (int i = 0; i > t >> s; ..
[BOJ] 14490번 백대열 (C++) https://www.acmicpc.net/problem/14490 14490번: 백대열 n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000) www.acmicpc.net #include #include using namespace std; int gcd(int a, int b){ if(b == 0) return a; else return gcd(b, a % b); } int main() { string s; cin >> s; int idx = s.find(":"); int n = stoi(s.substr(0, idx)); int m = stoi(s.substr(idx + 1, -1)); int gcf = gcd(n, m); cout