본문 바로가기

Algorithm/Math

(100)
(C++) - 백준(BOJ)코딩 11758번 : CCW 답 www.acmicpc.net/problem/11758 11758번: CCW 첫째 줄에 P1의 (x1, y1), 둘째 줄에 P2의 (x2, y2), 셋째 줄에 P3의 (x3, y3)가 주어진다. (-10,000 ≤ x1, y1, x2, y2, x3, y3 ≤ 10,000) 모든 좌표는 정수이다. P1, P2, P3의 좌표는 서로 다르다. www.acmicpc.net 대표적인 기하 알고리즘 중 하나인 CCW입니다. ※CCW : p1,p2,p3 점에서 볼 때 선분p1p2, 선분p2p3의 외적을 이용합니다. ※외적의 정의 : AXB = a*b*sina로 정의 되는데 이뜻은 vector A를 기준으로 vector B가 얼마나 회전하려는 성질을 가지고 있는지를 표시하는 척도라고 볼 수 있습니다. 따라서 외적의 값이..
(C++) - 백준(BOJ) 2942번 : 퍼거슨과 사과 #include #include using namespace std; int GCD(int a, int b)//가짓수는 r,g의 최대공약수의 약수의 개수 { if (b == 0) { return a; } return GCD(b, a%b); } int main() { int r, g; cin >> r >> g; int gcd = GCD(r, g); for (int i = 1; i
(C++) - 백준(BOJ) 2960번 : 에라토스테네스의 체 https://www.acmicpc.net/problem/2960 2960번: 에라토스테네스의 체 2, 4, 6, 8, 10, 3, 9, 5, 7 순서대로 지워진다. 7번째 지워진 수는 9이다. www.acmicpc.net 에라토스테네스의 체를 구현하는 문제였습니다. Code #include using namespace std; int n, k, cnt, c[1001],ans; int main() { cin >> n >> k; for (int i = 2; i
(C++) - 백준(BOJ) 10178번 : 할로윈의 사탕 답 www.acmicpc.net/problem/10178 10178번: 할로윈의 사탕 할로윈데이에 한신이네는 아부지가 사탕을 나눠주신다. 하지만 한신이의 형제들은 서로 사이가 좋지않아 서른이 넘어서도 사탕을 공정하게 나누어 주지 않으면 서로 싸움이 난다. 매년 할로윈 www.acmicpc.net 단순 수학 문제였습니다. Code #include using namespace std; int main() { int t, candy, bs; cin >> t; while (t--) { cin >> candy >> bs; cout
(C++) - 백준(BOJ) 10101번 : 삼각형 외우기 #include using namespace std; int main() { int a[3], sum=0; for (int i = 0; i > a[i]; sum += a[i]; } if (sum != 180) { cout
(C++) - 백준(BOJ)코딩 10818번 : 최소, 최대 www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net loop를 사용해 최소, 최대를 찾아 출력하는 문제였습니다. Code #include using namespace std; int a[1000001], b = -1000001, s = 1000001,n; int main() { cin >> n; for (int i = 0; i > a[i]; if (b ..
(C++) - 백준(BOJ) 11653번 : 소인수분해 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 간단한 수학문제였습니다. 풀이방법 1. n % cnt 의 결과가 양수 즉, 나머지가 남는다면 cnt를 나누어 떨어질때까지 1씩 증가시킵니다. 2. cnt를 출력합니다. Code #include using namespace std; int n; int main(){ cin >> n; int cnt = 2; while(n > 1){ int ret = n % cnt; if(ret) while((n % cnt)) cnt++; n /= cnt; cout
(C++) - 백준(BOJ) 10870번 : 피보나치 수 5 답 문제링크 : https://www.acmicpc.net/problem/10870 재귀문제를 메모이제이션으로 풀었습니다. 123456789101112131415161718192021222324#include using namespace std;int f(int num){ static int mem[21];//메모이제이션 if (mem[num] != 0) { return mem[num]; } if (num == 0 ) { return mem[num] = 0; } if (num == 1) { return mem[num] = 1; } return mem[num] = f(num - 1) + f(num - 2);}int main() { int num; cin >> num; cout