목록분류 전체보기 (384)
hwooo

https://www.acmicpc.net/problem/18870 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌 www.acmicpc.net 풀이 가장 작은 수를 0으로 놓고, 그보다 커지면 크기 순으로 값을 매김오름차순으로 정렬 후 첫 번째 원소를 0으로 지정한 후 앞의 원소와 값이 같으면 값을 그대로 받고 아니면 앞 원소 값+1 함. 처음 입력 받은 순서대로 재정렬 후 출력. 코드 #include #include #include using namespace std; vector V;..

https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 풀이 나이가 같을 때 순서가 바뀌지 않게 하기 위해 stable_sort() 사용시간을 줄이기 위해 endl 대신 \n 사용 코드 #include #include #include #include #include using namespace std; vector V; bool cmp(pair a, pair b) { return a.first < b.first; } int main() { int N, ag..

https://www.acmicpc.net/problem/2004 2004번: 조합 0의 개수 첫째 줄에 정수 $n$, $m$ ($0 \le m \le n \le 2,000,000,000$, $n \ne 0$)이 들어온다. www.acmicpc.net 풀이 우선 이 문제를 풀기 전에 아래 문제를 풀면 좋다. (1676번과 같은 알고리즘 사용)https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net - 10의 배수가 n개일 때 0의 개수가 n개이므로 n!을 소인수분해 하여 2와 5의 배수의 개수를 찾는다. - nCm = n! / (n-m)!..

https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 풀이 0의 개수 = 소인수분해 시 10의 개수 = 소인수분해 시 2와 5의 개수 중 작은 값 (곱해서 10이 나와야 하니까) 코드 #include int main() { int N, n; int cnt_2 = 0, cnt_5 = 0, cnt; scanf("%d", &N); for (int i = 2; i cnt_5 ? cnt_5 : cnt_2; printf("%d", cnt); return 0; }

https://www.acmicpc.net/problem/1181 1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 풀이 - 중복의 경우를 제거해야 했기에 우선순위 큐와 벡터 중 벡터를 선택. cmp 함수 만들어서 원하는 조건으로 정렬함. - cmp 함수는 true 값이 return 될 때 sort 시행됨. 이 경우 return a

https://www.acmicpc.net/problem/3053 3053번: 택시 기하학 첫째 줄에는 유클리드 기하학에서 반지름이 R인 원의 넓이를, 둘째 줄에는 택시 기하학에서 반지름이 R인 원의 넓이를 출력한다. 정답과의 오차는 0.0001까지 허용한다. www.acmicpc.net 풀이 택시 기하학에서 반지름은 R*sqrt(2) 코드 #define _USE_MATH_DEFINES // pi 값 사용 위해 #include #include int main() { double R, S1, S2, pie = 3.141593; scanf("%lf", &R); S1 = R * R*M_PI; R *= sqrt(2); S2 = R * R; printf("%.6f\n%.6f", S1, S2); return 0; }

https://www.acmicpc.net/problem/14495 14495번: 피보나치 비스무리한 수열 피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보 www.acmicpc.net 코드 #include int main() { int n; int F[117] = { 0,1,1,1 }; scanf("%d", &n); for (int i = 4; i

https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 코드 #include int main() { int M, N, i, num, sum = 0, min=0; scanf("%d%d", &M, &N); for (i = M; i