728x90
728x90

수학 39

[책] 알고리즘 산책:수학에서 제네릭 프로그래밍까지

학부 과정이나 입문자를 위한 알고리즘 책이라고 하면, 프로그래밍이 메인이고, 수학은 시간 복잡도 계산이나 근사치 계산 정도에 쓰이는 정도가 전부인 경우가 많다. 책 구성 또한 시간 복잡도 및 공간 복잡도 계산부터 시작해서 그리디나 다이나믹 프로그래밍(동적계획법) 같은 최적해를 구하는 알고리즘들, 그래프를 이용한 알고리즘(DFS, BFS)들로 구성되어 있다. 이들 알고리즘에 대해 충분히 학습했거나, 이런 내용보다 수학적인 연관성에 관심이 가는 사람들에게는 보통의 책들이 어딘가 부족할 수도 있다. 오늘은 그런 사람들을 위한 책을 하나 소개해볼까 한다. 알고리즘 산책 : 수학에서 제네릭프로그래밍까지 먼저 책의 목차를 살펴보자. 1. 이 책에 관하여2. 첫 번째 알고리즘3. 고대 그리스의 정수론4. 유클리드의 ..

기타/기타 2018.08.24

백준] 2863 - 이게 분수?(COCI 2010/2011)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 A와 B가 공백으로 구분되어 주어진다. 둘째 줄에 C와 D가 공백으로 구분되어 주어진다. 모든 수는 100보다 작거나 같은 양의 정수이다. 출력첫째 줄에 표를 몇 번 돌려야 표의 값이 최대가 되는지 출력한다. 만약, 그러한 값이 여러개라면 가장 작은 값을 출력한다. 소스코드 #include using namespace std; int main(void) { int cnt, ans; double a, b, c, d, max = 0, tmp; cin >> a >> b >> c >> d; for (cnt = 0; cnt < 4; cnt++) { switch (cnt) { case 0: tmp = a / c + b / d; break; case 1: t..

백준] 14563 - 완전수(중앙대학교 CodeRace 2017)

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 자연수의 개수 T가 주어진다. T은 1000보다 작은 수이다.둘째 줄에는 공백을 사이에 두고 완전수인지 구해야 되는 자연수 N이 주어진다.(N> t; vector arr(t); for (int i = 0; i > arr[i]; for (int i = 0; i < t; i++) { if (arr[i] == 1) cout j) sum += (arr[i] / j + j); else break; } } if (sum == arr[i]) cout

백준] 2740 - 행렬 곱셈

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 행렬 A의 크기 N 과 M이 주어진다. 둘째줄부터 N개의 줄에 행렬 A의 원소 M개가 차레대로 주어진다. 그 다음 줄에는 행렬 B의 크기 M과 K가 주어진다. 이어서 M개의 줄에 행렬 B의 원소 K개가 차례대로 주어진다. N과 M, 그리고 K는 100보다 작거나 같고, 행렬의 원소는 절대값이 100보다 작거나 같은 정수이다. 출력첫째줄부터 N개의 줄에 행렬 A와 B를 곱한 행렬을 출력한다. 행렬의 각 원소는 공백으로 구분한다. 소스코드 #include using namespace std; int main(void) { int A[100][100], B[100][100], C[100][100] = { 0, }, n, m, k; cin >> n >>..

백준] 1812 - 사탕

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 N(3≤N≤999, N은 홀수)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 1번 학생과 2번 학생이 가지고 있는 사탕의 수의 합, 2번 학생과 3번 학생이 가지고 있는 사탕의 수의 합, …, N-1번 학생과 N번 학생이 가지고 있는 사탕의 수의 합, 마지막으로 N번 학생과 1번 학생의 가지고 있는 사탕의 수의 합이 순서대로 주어진다. 출력첫째 줄부터 N개의 줄에 걸쳐 1번 학생이 가지고 있는 사탕의 수, 2번 학생이 가지고 있는 사탕의 수, …, N번 학생이 가지고 있는 사탕의 수를 순서대로 출력한다. 출력하는 수는 음이 아닌 정수들이어야 하며, 항상 답이 존재하는 경우만이 입력으로 주어진다고 가정해도 좋다. 소스코드 #include using ..

백준] 1356 - 유진수

시간 제한 : 2초메모리 제한 : 128MB 입력첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다. 출력첫째 줄에 N이 유진수이면 YES, 아니면 NO를 출력한다. 소스코드 #include #include #include using namespace std; int main(void) { int n, tmp, sub1, sub2, size; vector arr; bool check = false; cin >> n; tmp = n; while (tmp > 0) { arr.push_back(tmp % 10); tmp /= 10; } size = arr.size(); if (size > 1) { for (int i = 0; i < size; i++) { sub1 = su..

백준] 1712 - 손익분기점

시간 제한 : 1초메모리 제한 : 128MB 입력첫째 줄에 A, B, C가 빈 칸을 사이에 두고 순서대로 주어진다. A, B, C는 21억 이하의 자연수이다. 출력첫 번째 줄에 손익분기점 즉 최초로 이익이 발생하는 판매량을 출력한다. 손익분기점이 존재하지 않으면 -1을 출력한다. 소스코드 #include using namespace std; int main(void) { int a, b, c; long long n; cin >> a >> b >> c; if (b >= c) cout

728x90