코딩문제/백준
-
1978 : 소수찾기코딩문제/백준 2020. 7. 13. 02:56
소수 : 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다. 예를 들어, 5는 1×5 또는 5×1로 수를 곱한 결과를 적는 유일한 방법이 그 수 자신을 포함하기 때문에 5는 소수이다. 이러한 수는 결국 1과 자기자신 그외 경우로는 나눠지지 않아야한다. (1 and 자기자신 두개만 가짐) 카운트 변수를 두어, 반복문을 돌리면서 숫자 tmp의 약수가 되는 개수가 2개이면, 소수이므로 카운트변수 cnt를 증가시키게 했고, 이를 출력하였다. #include using namespace std; int main() { int n, cnt2, cnt=0; cin >> n; for (int i = 0; i > tmp; cnt2 = 0; for (..
-
9613 : GCD 합코딩문제/백준 2020. 7. 13. 02:44
이번에는 유클리드 알고리즘을 적용한 재귀함수를 이용해 최대 공약수를 이용하기로 하였다. 메인함수내에서 벡터들을 처리하면서, 비효율적으로 처리된것 같긴한데, 이를 어떻게 효율적으로 할진 천천히 생각해봐야겠다. 처음시도에 gcd 합을 담는 sum을 int형을 사용했는데 오답이라 떠서, 입력 조건을 보니, int범위를 넘을듯싶어 long long int 형으로 좀더 범위가 큰 데이터형을 쓰니 정답처리가 되었다. #include #include using namespace std; int max_num(int a, int b) { //최대공약수 if (b == 0) return a; return max_num(b, a%b); } int main() { int n, n2; long long sum=0; vecto..
-
1934 : 최소공배수코딩문제/백준 2020. 7. 13. 00:56
최소공배수 구하는 식을 생각하면 간단한 문제다. (a,b의 최대공약수 * 숫자a * 숫자b) 최대공약수 구하는것은, a,b중 작은 수를 기준으로, 변수하나(num)를 만들어서 값을 넣고 반복문 돌리면서, 1씩 빼주면서, 두 수를 각각 num으로 나눈 나머지가 0이면 해당 num이 최대 공약수가 된다. #include #include using namespace std; int max_num(int a, int b) { //최대공약수 int num = 0; if (a > b) { for (int i = b; i > 0; i--) { if (a%i == 0 && b%i == 0) return num = i; } } else { for (int i = a; i > 0; i--) { if (a%i == 0 &&..
-
2798 블랙잭코딩문제/백준 2020. 7. 9. 02:22
3중 for문을 이용하여, 모든 경우의 수를 다 점검하여, 최적의 값 즉 3개의 합이 M에 가장 가까운 값을 고르는 방식 이용. 만약 M에 일치하는 값이 나오면 이미 최적의 수이므로, 반복문을 종료 하기로 하였다. #include #include using namespace std; int main() { int n, m; int sum = 0; cin >> n >> m; vector arr; for (int i = 0; i > tmp; arr.push_back(tmp); } for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { for (int k = j+1; k < n; k++) { int tmp2 ..
-
2748 피보나치수코딩문제/백준 2020. 7. 9. 01:58
#include using namespace std; unsigned long long int arr[100]; unsigned long long int fib(int a) { if (a == 1) return arr[a] = 1; if (a == 2) return arr[a] = 1; if (arr[a] != 0) return arr[a]; return arr[a] = fib(a-1) + fib(a-2); } int main() { int test = 0; cin >> test; cout