PS 76

[CF] Round #672 (Div. 2) _ 200924

(2020년 9월 25일에 작성한 글입니다.) Dashboard - Codeforces Round #672 (Div. 2) - Codeforces codeforces.com A. Bubble Sort에서 swap이 최대로 이루어지면 그 횟수는 N*(N-1)/2 이기 때문에 최대로 이루어지는 경우가 아니기만 하면 된다. 그 경우는 수열의 수들이 모두 감소하는 경우이고 그러니까 한번이라도 a[i-1] > T; while (T--) { cin >> N; vector arr(N); ans = false; cin >> arr[0]; for (i = 1; i > arr[i]; if (arr[i - 1]

Programming 2021.04.13

[CF] Round #671 (Div. 2) _ 200919

(2020년 9월 22일에 작성한 글입니다.) Dashboard - Codeforces Round #671 (Div. 2) - Codeforces codeforces.com A. 일단 문제를 이해하는 데 시간이 좀 걸렸다.... 그리고 문제를 이해한 후에도 풀이 정리하는 데 또 시간이 걸렸고 그래서 결국 풀이는 만약 N이 홀수이고, 홀수번째 digit의 수 중 홀수가 있으면 1, 없으면 2 만약 N이 짝수이고, 짝수번째 digit의 수 중 짝수가 있으면 2, 없으면 1 이렇게 하면 되는건데.... 시간 너무 많이 썼다. int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; int N; char c; int num; int cnt; i..

Programming 2021.04.13

[CF] Educational Round 95 (Div. 2) _ 200914

(2020년 9월 15일에 작성한 글입니다.) Dashboard - Educational Codeforces Round 95 (Rated for Div. 2) - Codeforces codeforces.com 이렇게 긴장감 없는 코포는 처음이었어. ​ A번 예제 output이 잘못 나와있어서 이해하려고 노력하다가 B로 넘어갔었는데 A번 문제 때문에 unrated 되었고 그래서 그냥 적당히 풀었다. ​ A. ans = ((y + 1) * k - 1 + (x - 2)) / (x - 1) + k (x - 2)를 더한 건 올림을 위함이다. int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; ll x, y, k; ll ans; cin >> ..

Programming 2021.04.13

[CF] Round #669 (Div. 2) _ 200908

(2020년 9월 10일에 작성한 글입니다.) Dashboard - Codeforces Round #669 (Div. 2) - Codeforces codeforces.com A. 코포 스타일의 문제에 빨리 익숙해져야 할 것 같다. 그러려면 문제를 많이 풀어봐야 되겠지. A에서 시간을 많이 쓰는 걸 해결해야 할 듯. 0이랑 1만 등장하기 때문에 만약 전체에서 0의 개수가 더 많으면, 그냥 그 개수만큼 0을 출력하고 1이 더 많으면 1을 짝수개만 남겨두고 출력하면 된다. 짝수개를 남겨두는 방법은, 현재 1의 개수가 짝수면 그대로 남겨두고, 홀수면 1개를 없애고. 이때 1개를 없앨 때, 남아있는 1의 개수가 K/2 이상이어야 하는데 무조건 그렇게 된다. 왜냐하면 1이 0보다 많은 상태이고 그럼 최소 K/2+1..

Programming 2021.04.13

[CF] Round #657 (Div. 2) _ 200905

(2020년 9월 6일에 작성한 글입니다.) Dashboard - Codeforces Round #657 (Div. 2) - Codeforces codeforces.com 학회 코드포스 스터디 Road to Expert에서 풀었다. ​ A. 아니 이 문제가 어떻게 A번일 수 있는가.. 싶을 정도로 A번 같지 않은 문제였다. abacaba가 하나만 존재해야 하기 때문에 물음표를 채우고 나서, 전체 문자열에서 abacaba가 하나밖에 없다는 걸 확인해야 하는데 여기서 나는 abacaba가 시작하는 지점을 indx라고 하면 indx + 4부터 시작하는 abacaba가 있는지만을 확인하면 되는 줄 알았다. 근데 아니었어. abacaba 앞에 abac가 있을수도 있고, 맨 마지막 a에 bacaba가 붙어서 생겼을..

Programming 2021.04.13

[CF] Round #667 (Div. 3) _ 200904

(2020년 9월 5일에 작성한 글입니다.) Dashboard - Codeforces Round #667 (Div. 3) - Codeforces codeforces.com A. 놀랍게도 1분만에 풀었다. 그래서 div3 역시 쉽구나 그런 생각을 했다.​ int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int T; int a, b; cin >> T; while (T--) { cin >> a >> b; if (a > b) { swap(a, b); } cout T; while (T--) { cin >> A >> B >> X >> Y >> N; a = A; b = B; x = X; y = Y; n = N; if (a - n >= x) { a = a..

Programming 2021.04.13

[BOJ] 2805 나무 자르기

www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 학회 스터디 강의할 때 다룬 문제 이 문제를 잘 설명하고 싶어서... ppt.. 정말 열심히 만들었다. 이분탐색을 접목해 가능한 높이 중 일부만 확인하는 게 포인트. int arr[1000000]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; int left, right, maxH = 0..

Programming 2021.04.02