알고리즘 109

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, ..

21922번: 학부 연구생 민상

2022.02.14 문제 출처: https://www.acmicpc.net/problem/21922 문제 분석: 문제의 조건에 따라 구현해 내는 구현 문제인것 같다. 문제 해결: 에어컨을 기준으로 상하좌우로 바람을 보내 바람이 물건을 만났을때 그에 해당하는 방향으로 회전 시켜주는 것을 구현하는 문제 물건 1,2 같은경우는 튕겨나가서 반대방향으로 가는것은 어차피 겹치기때문에 구현하지 않아도 되고 에어컨을 만나는 경우에는 그 에어컨에서 바람이 나올것이기 때문에 정지 해줘도 된다. 핵심은 방문처리를 하는 부분에서 방향에 따라 다르게 3차원으로 칠해야 되는 것 같다. 내 소스코드: using namespace std; typedef long long ll; typedef unsigned long long ull..

1063번: 킹

2022.02.05 문제 출처: https://www.acmicpc.net/problem/1063 문제 분석: 킹과 돌맹이를 주어진 방향에 따라 움직이는 문제이다. 킹이 움직이는 방향에 돌맹이가 있으면 같이 밀린다. 필요한 요구사항에 따라 구현 하면 될듯 하다. 문제 해결: 처음에 주어진 좌표를 숫자좌표로 바꾸고 킹이 움직이는 방향을 돌맹이와의 상대좌표와 비교해서 같이 움직이는지 안움직이는지를 확인한다. 그리고 체스판 제한을 확인하며 움직여 준다. 내 소스코드: using namespace std; typedef long long ll; typedef unsigned long long ull; typedef long double ld; typedef pair pii; typedef vector vi; c..

10164번: 격자상의 경로

2022.02.03 문제 출처: https://www.acmicpc.net/problem/10164 문제 분석: o 표시가 되있는 칸이 있으면 o 표시를 꼭 지나야 할때 N, M 칸에 도달 하는 경우의 수를 구하여라. 로봇이 오른쪽, 아래만 갈 수 있기 때문에 중,고등학교 때 보던 최단거리 문제와 푸는 방법이 같을것 같다. arr[i][j] = arr[i-1][j] + arr[i][j-1] 다음과 같은 점화식을 따른다. 문제 해결: 다른부분은 점화식 그대로 코드를 짜면되지만 K, o를 치는 부분을 x, y좌표로 나타내야된다. Y좌표는 K / M X좌표는 K - K/M*M - 1 로 나타냈다. 하지만 위와 같은 방법은 K를 M으로 나눴을때 나머지가 0일때는 다른값이 나와 예외처리를 해준다. Y = K / ..

2539번: 모자이크

2022.01.23 문제 출처: https://www.acmicpc.net/problem/2539 문제 분석: 잘못 칠해진 칸들의 좌표들을 정해줬을 때 이를 덮을 수 있는 정사각형 색종이의 가장 작은 크기를 구하는것. 사용할 정사각형의 색종이의 개수는 정해져 있다. 문제 해결: 문제에서 주어지는 예시 처럼 3cm 정사각형 색종이 4개로 덮을 수 있다. 그렇다면 4cm 정사각형 색종이 4개로도 덮을 수 있다. 즉, 답보다 큰 색종이들로는 모두 조건을 만족 하고, 정답보다 작은 크기의 색종이를 걸러내는 이분탐색을 사용하면 답에 한없이 가까워 질 수 있는 것이다. 이 때, 걸러내는 부분에서는 첫 잘못 칠해진 칸 기준으로 색종이를 점점 늘려갔을때 제한된 색종이 개수보다 많이 들면 false를 return 하는 ..