본문 바로가기
728x90

알고리즘49

[codeground] Practice. 3. 시험 공부 문제의 핵심은 n개의 숫자 중에서 가장 큰 k개의 합을 구하는 것 정렬을 해서 뒤부터 k개를 골라 더하면 되는 간단한 문제이다. #include #include #include using namespace std; int Answer; int main() { int T, test_case; int n, k; vector arr; cin >> T; for (test_case = 0; test_case > n >> k; arr.assign(n, 0); for (int i = 0; i > arr[i]; } sort(arr.begin(), arr.end()); for (int i = n - 1; i >= n - k;.. 2020. 8. 26.
[NYPC] [2019 예선 연습] 1. 비밀번호 검사 문제 어떤 웹사이트에 회원가입하기 위해서 다음과 같은 비밀번호 조건들이 있다. 입력으로 들어온 문자열이 다음 조건을 만족하는지 확인하는 프로그램을 작성하시오. 비밀번호는 8자 이상 15자 이하이어야 한다. 비밀번호에 영어 대문자가 반드시 포함되어야 한다. 비밀번호에 영어 소문자가 반드시 포함되어야 한다. 비밀번호에 숫자가 반드시 포함되어야 한다. 비밀번호에 특수문자가 반드시 포함되어야 한다. 입력 형식 입력으로 들어오는 문자열의 최대 길이는 100자이다. 문자열은 영어 대소문자, 숫자, 그리고 특수문자로만 구성되어있다. 특수문자는 `!@#$%^&*()-=_+|;:'"/?,.~[]{}``만 주어진다. 출력 형식 입력으로 들어온 문자열이 웹사이트에서 요구하는 조건을 만족하는 문자열이라면 valid를 출력하고.. 2020. 8. 25.
[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.
C++ 알고리즘 실행시간 줄이기 입력이 많은 경우 cin.tie(NULL); ios_base::sync_with_stdio(0); 입력의 시간을 줄여준다, 출력이 많은 경우 줄바꿈을 할 때 endl이 아닌 \n을 사용해준다. 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.
문자열 정렬 #include #include #include using namespace std; bool comp(string s1, string s2){ return s1 < s2; } int main(){ string arr[5] = {"abc", "aa", "abcd", "aza", "bcda"}; sort(arr, arr+5, comp); for(int i=0;i 2020. 8. 11.
[백준] 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.
728x90