알고리즘/알고리즘 문제풀이 43

Codeforces Round #806 (Div. 4) - A

문제 출처: https://codeforces.com/contest/1703/problem/A 문제 분석: yes Yes 등 yes가 들어오면 YES 아니면 NO를 출력하는 문제 문제 해결: 모든 수를 uppercase로 바꿔주고 체크 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) ..

Codeforces Round #805 (Div. 3) - D

문제 출처: https://codeforces.com/contest/1702/problem/D 문제 분석: 단어 별로 cost를 매길때 cost가 주어졌을때 이하가 되도록 글자를 그만큼 제거하고 index는 변하지 않게 출력해 내는 것이다. 문제 해결: 이 역시 그리디한 방식으로 풀릴것같은데 문제는 구현이였다. priority queue를 이용해서 cost가 큰 글자부터 제거해 나가면 된다. 내 소스코드: #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #i..

Codeforces Round #805 (Div. 3) - C

문제 출처: https://codeforces.com/contest/1702/problem/C 문제 분석: 예제로 보는것이 이해가 편하다 3 7 1 5 1 4 다음과 같이 기차가 가는 동선이 주어지는데 (좌에서 우로 만 이동한다.) 이후에 쿼리가 주어진다. 7 1 7->1로 갈 수 있는가? NO 1 5 1->5로 갈 수 있는가? YES 이때 정수의 범위가 10^9 이고 쿼리의 개수도 10^9까지 들어온다. 문제 해결: 처음에는 indexing으로 어떻게 될 것 같았는데 int범위가 너무 커서 불가능 할거라고 판단하여 map을 이용하여 두개만을 저장했다. 가장 먼저 나오는 정류장과 가장 나중에 나오는 정류장. 이것만 가지고 갈 수 있는 여부를 확인 할 수 있기 때문이다. 내 소스코드: #define _CR..

Codeforces Round #805 (Div. 3) - B

문제 출처: https://codeforces.com/contest/1702/problem/B 문제 분석: 하루에 단어를 3개 기억한다. 최소한의 날짜로 전체의 단어를 적으려면 몇일 걸리는가에 관한 문제이다. lollipops l o i 기억시 첫날 lolli p o s 기억 후 이틀째 pops 문제 해결: arr안에 기억한 알파벳을 저장하고 used로 3개가 넘어가면 날짜를 체크한다. used가 3인 순간 체크 해버리면 lollill 이런 단어는 체크가 안된다. lolli 여기서 끊길것이다. 내 소스코드: #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #includ..

Codeforces Round #805 (Div. 3) - A

문제 출처: https://codeforces.com/contest/1702/problem/A 문제 분석: 178 -> 100 9000 -> 1000 10의 n승의 형태로 나오게 빼야될 값을 구하는 문제이다. 문제 해결: 문제에서 요구한 대로 구현했다. 내 소스코드: #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (int)(n..

Codeforces Round #790 (Div. 4) - E

문제 출처: https://codeforces.com/contest/1676/problem/E 문제 분석: 설탕의 양이 주어져있고 쿼리로 현재 설탕으로 쿼리값을 만들려면 최소 몇개의 설탕이 필요한지를 알아야한다. 그래서 처음에는 브루트포스로 가능할줄알았지만 쿼리의 양이 매우 많아 시간초과가 난다. 따라서 이분탐색을 이용해서 문제를 해결했다. 문제 해결: 설탕을 정렬한 다음 뒤집어서 부분합을 만들어 놓는다. 그리고 lowerbound로 값을 찾으면 최소 개수 및 가능한지 여부를 확인 할 수 있다. 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #incl..

Codeforces Round #790 (Div. 4) - D

문제 출처: https://codeforces.com/contest/1676/problem/D 문제 분석: 브루트포스 + 구현 문제 해결: 각 위치마다 비숍을 한번씩 둬서 그 이동 범위만큼 값을 다 더하는 걸 반복해서 시행한다. 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (i..

Codeforces Round #790 (Div. 4) - C

문제 출처: https://codeforces.com/contest/1676/problem/C 문제 분석: 브루트포스 문제 해결: 단어끼리 뺐을때 가장 적은 차이값을 구하는 문제이다 그대로 모두 계산해서 구하면된다. 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (int)(n);..

Codeforces Round #790 (Div. 4) - B

문제 출처: https://codeforces.com/contest/1676/problem/B 문제 분석: 구현 문제 해결: 박스안에 모두 같은 개수가 되려면 몇개를 빼야 되는가에 대한 문제이다 박스중 가장 작은값 찾아서 그만큼 다 빼주면 된다. 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i =..

Codeforces Round #790 (Div. 4) - A

문제 출처: https://codeforces.com/contest/1676/problem/A 문제 분석: 구현 문제 해결: 앞 세수를 더한값과 뒷 세수 더한값이 같으면 된다. 내 소스코드: // freopen("input.txt", "r", stdin); #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i, n) for (int i = 0; i < (int)(n); ++i) #define rep1(i, ..