목록알고리즘/코드포스 (8)
어흥
문제 링크: https://codeforces.com/contest/1323/problem/C Problem - C - Codeforces codeforces.com 1. 구현 - 입력받은 문자열 중에서 '('의 개수와 ')'의 개수가 같지 않으면 -1 출력한다. -> 이걸 안해서 틀렸다. 다음부턴 조심하자 - 위에서 수한 개수가 같다면, '('와')'이 짝이 이뤄지지 않을 때 만큼 더한다. "))()(("같은 문자열도 처리가 되도록 변수를 2개 설정해서 구한다. #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); i..
문제 링크: https://codeforces.com/contest/1323/problem/B Problem - B - Codeforces codeforces.com 1. 구현 - K의 약수를 먼저 구한다 - A와 B의 배열에서 (연속된 1의 개수, 해당 값의 개수)를 Map에 저장한다 - A의 처음부터 끝까지 K의 약수보다 큰수가 존재하면 (A의 수 - K +1)* A의 개수 만큼 더한다 - B의 처음부터 끝까지 K/A의 약수보다 큰 수가 존재하면 (B의 수 -K/A +1) * B의 개수 만큼 더한다 - 위 2개를 곱하고, K의 약수개수만큼 반복한다 #include #include #include #include using namespace std; long long num; vector v; void..
문제 링크: https://codeforces.com/contest/1323/problem/A Problem - A - Codeforces codeforces.com 1. 구현 - 입력받은 배열의 개수가 1개이며 홀수라면 -1 출력 - 입력받은 배열에 짝수 값이 있으면 1과 함께 해당 짝수의 index 출력 - 입력받은 배열에 홀수가 2개 있다면 2와 함께 해당 홀수들의 index 출력 #include #include using namespace std; int arr[100]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test; cin >> test; for (int t = 0; t < test; ..
문제 링크: https://codeforces.com/problemset/problem/1300/B Problem - 1300B - Codeforces codeforces.com 1. 주의할 점 - N의 입력이 주어지면, 총 2*N개의 원소를 입력 받아야한다. 2. 구현 - 입력받은 2*N개의 원소를 Sort하고 N번째와 N-1번째의 차를 출력한다 #include #include using namespace std; long long arr[200000]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test; cin >> test; for (int t = 0; t < test; t++) { int nu..
문제 링크: https://codeforces.com/contest/1304/problem/B Problem - B - Codeforces codeforces.com 1. 주의할 점 - 현재 입력받은 String이 팰린드롬인지 아닌지 구분한다 -> 팰린드롬이면 결과의 중간에 삽입되도록 ansm에 넣는다. - 현재 입력받은 String이 기존에 입력받은 String과 Reverse가 되는지 확인한다 -> Reverse가 존재한다면 한쪽은 결과의 왼쪽, 다른 한쪽은 결과의 오른쪽에 붙인다 2. 구현 - Reverse 값이 있는지 확인하기 위해 for문을 돌리는 경우 -> 전체 검색할 때 N^2만큼 소요 - Reverse 값이 있는지 확인하기 위해 Map이나 Set을 사용하는 경우 -> 전체 검색할 때 Nlo..
문제 링크: https://codeforces.com/contest/1305/problem/C Problem - C - Codeforces codeforces.com 1. 주의할 점 - N의 범위가 20만이므로 N^2으로는 TLE가 발생한다. - M의 범위가 1000이하라는 사실에 유의한다 2. 구현 - 입력으로 받은 수 An % M의 값이 이미 존재하는 경우, 파이값은 무조건 0이다 #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int test, num, mod, tt; cin >> num >> mod; vector v; bo..
문제 링크: https://codeforces.com/contest/1305/problem/B Problem - B - Codeforces codeforces.com 1. 주의할점 - 첫번째 output의 답으로는 0혹은 1밖에 나오지 않는다 2. 구현 - Stack을 이용 or DoublePointer 이용 #include #include #include #include using namespace std; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); string str; cin >> str; vector v; int l = 0, r = str.size() - 1; while (l < r) { while (1..
문제 링크: https://codeforces.com/contest/1305/problem/A Problem - A - Codeforces codeforces.com 1. 주의할 점 - 테스트케이스마다 각 vector을 초기화시켜준다 2. 구현 - 2개의 vector를 sort한 이후, 순서대로 더해주면 겹치는 값이 생기지 않는다. #include #include #include using namespace std; int main() { int test, tt, num; cin >> test; for (int t = 0; t > num; vector brace; vector neck; for (int i = 0; i > tt; nec..