https://www.acmicpc.net/problem/10989 10989번: 수 정렬하기 3 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. www.acmicpc.net 어떻게 풀어야 할까? 아마 이 문제를 처음 접할 때, 선택 정렬 알고리즘을 사용할 것 이다. 그러면 틀린다. 왜냐면 배열을 int 형으로 잡고 10,000,000 계산한다고 가정했을때, 보수적으로 잡아도 40MB의 메모리가 소요되기 때문이다. 선택 정렬로 풀면 이중 for문이 들어가게 된다. -> 시간 초과에서 걸린다. 그렇다면, sort()함수를 이용해서 풀면 될까? -> 메모리 초과로 불가능 그래도 시간 초과가 ..
https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 어떻게 풀 것인가? 처음에는 소수를 판별하는 함수(2부터 n보다 작은 수로 나눠서 나머지가 0인게 중간에 있다면 소수O) 를 사용하여 풀려고 했다. 하지만, 이 방식을 사용하게 된다면 시간초과가 뜰 가능성이 매우 높다. '에라토스테네스의 체'를 사용하여 문제를 풀 수도 있었지만, for문의 사용을 최대한 줄여서, 연산시간을 최대한 줄일려고 노력했다. 소스 코드 #include using namespace s..
https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 풀이 #include int main(void) { using namespace std; int arr[7] = {1, 1, 2, 2, 2, 8}; int a = 0; for(int i = 0; i > a; cout a에서 입력된다.