본문 바로가기
728x90

알고리즘/문제43

[codeground] Practice. 2. 프로그래밍 경진대회 만점 코드 #include #include using namespace std; int main() { int Answer; int T, test_case; int n, i, j, big; int arr[300001]; cin >> T; for(test_case = 0; test_case >n; for(i=0; i>arr[i]; } sort(arr, arr+n); big=-1; for(i=0; ibig) big=arr[i]+n-i; } for(i=n-1; i>=0; i--) { if(arr[i]+n>=big) Answer++; } cout arr[i]; sort(arr, arr+n); big=arr[n-1]; for(i=0; i 2020. 8. 22.
[codeground] Practice. 1. 숫자 골라내기 처음엔 각 숫자를 세고 막 어찌어찌 하려고 하다가 한참을 고민했다. 그러나 XOR의 규칙을 보면 같은 숫자를 짝수번 연산해주면 원상복귀된다.... ex. 0000 ^ 0010 = 0010 (0^2=2) 0010 ^ 0010 = 0000 (2^2=0) 그래서 그냥 입력받고, XOR해주고 이 두개를 n만큼 반복하면 끝인 간단한 문제였다. #include using namespace std; int Answer; int main() { int T, test_case; int n, input, i; cin >> T; for(test_case = 0; test_case >n; for(i=0; i>input; Answer^=input; } cout 2020. 8. 21.
[백준] 16180. New House <C++> https://www.acmicpc.net/problem/16180 16180번: New House Johan wants to build a new house and he wants his house as large as it can. Given an N x N grid land, find the largest square size that fit in the free area. www.acmicpc.net ICPC > Regionals > Asia Pacific > Indonesia > Indonesia National Contest > INC 2009 F번 적당한 난이도의 문제였던 것 같다. 영어라 그런지 푼 사람이 적었다. 여러가지 놓친 부분들이 많아서 3번이나 틀렸다. 앞으로는 문제에서 놓친 부분.. 2020. 8. 11.
[백준] 1920. 수 찾기 <C++> https://www.acmicpc.net/problem/1920 1920번: 수 찾기 첫째 줄에 자연수 N(1≤N≤100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1≤M≤100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안�� www.acmicpc.net 이 문제는 시간초과를 위한 문제이다. 퀵정렬을 이용해 정렬하고, 이분탐색으로 풀어야한다. 그리고 C++언어를 이용해 cin, cout을 이용해도 시간초과가 발생하기 때문에 cin, cout의 시간을 줄여줄 명령어도 사용해주어야한다. //cin, cout의 시간을 줄여주는 명령어 cin.tie(NULL); ios_base::sync_with_stdio(0.. 2020. 7. 28.
[백준] 6588. 골드바흐의 추측 <C++> 1. 우선 입력받을 때마다 소수를 찾으면 200%의 확률로 시간 초과가 납니다. 에라토스를 써줍시다. //에라토스 코드 for(int i=2; i*i 2020. 7. 21.
구름 문제은행 (시공의 폭풍 속으로) <C++> //방법1. #include using namespace std; int main() { int arr1[4], arr2[5], i, j, cnt=5; for(i=0; i>arr1[i]; for(i=0; i>arr2[i]; for(i=0; i 2020. 7. 17.
구름 문제은행 (앵무새 꼬꼬) <C++> #include #include using namespace std; int main() { int n, len, i, cnt; string str; cin>>n; getline(cin, str); while(n--) { getline(cin, str); len=str.size(); cnt=0; for(i=0; i 2020. 7. 11.
구름 문제은행 (배열 합치기) <C++> 구름 문제은행에 있는 문제들 몇몇은 참 조건이 부족해서 문제를 읽을 때 참 불편한 느낌이 있다. 게다가 구름 문제? 보다 윤군님 문제가 더 많은 것 같기도;; a, b의 범위라던지 등등 대강 했더니 맞았다. 입출력 예시 1로 설명하겠다. a_pointer와 b_pointer이 각각 0부터 시작한다. a[0]과 b[0]을 비교해서 b[0]이 더 작으므로 b[0]을 출력하고 b_pointer은 1이 된다. a[0]과 b[1]을 비교해서 a[0]이 더 작으므로 a[0]을 출력하고 a_pointer은 1이 된다. . . . 쭉쭉 가다가 a배열이나 b 배열이 끝까지 간 상황이라면 하나만 출력한다. #include using namespace std; int main() { int a_size, b_size; in.. 2020. 7. 4.
[백준] 17615. 볼 모으기 <C++> https://www.acmicpc.net/problem/17615 17615번: 볼 모으기 첫 번째 줄에는 볼의 총 개수 N이 주어진다. (1 ≤ N ≤ 500,000) 다음 줄에는 볼의 색깔을 나타내는 문자 R(빨간색 볼) 또는 B(파란색 볼)가 공백 없이 주어진다. 문자열에는 R 또는 B 중 한 종류만 주�� www.acmicpc.net 음.. 무언가 규칙이 있을 것 같기는 한데 떠오르지는 않았다... 그래서 정말 단순하게 알고리즘을 생각했다. 파란색들을 왼쪽으로 다 모을 때, 오른쪽으로 모을 때 빨간색들을 왼쪽으로 다 모을 때, 오른쪽으로 모을 때 (코드에서 정말로 배열의 각 방을 스왑하거나 하지는 않는다. 개수를 셀 뿐이다.) 이렇게 네 가지의 경우를 모두 구해 최소값을 구하도록 만들었다. RB.. 2020. 6. 20.
728x90