JUNGOL
-
JUNGOL 실력키우기 수학2 - 이진수 | 10진수를 2, 8, 16진수로 | 진법 변환보관함 2020. 2. 5. 23:35
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학2의 진법 변환 시리즈를 풀어보겠습니다. 2814 : 이진수 기본적으로 입력은 최대 30자리가 넘기 때문에 문자열로 받아야 합니다. 이후에는 가장 마지막 자리에서부터 처음 까지(end -> 0)를 순회하며 1부터 2씩 곱해가며 해당 값과 곱해 값을 누적하면 됩니다. 저는 reverse_iterator를 사용했는데 단순히 bStr.Size() - 1에서 1씩 감소시켜 0 이상까지 반복하는 방법도 있습니다. #include #include using namespace std; int main(void) { string bStr; cin >> bStr;..
-
JUNGOL 실력키우기 수학2 - 소수와 합성수 | 소수 | 소수 구하기 | 소수의 개수보관함 2020. 2. 5. 23:33
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학2의 소수 시리즈를 풀어보겠습니다. 2811 : 소수와 합성수 이 문제는 단순하게 2부터 입력된 숫자까지를 돌면서 나눠지는 값이 있는지를 확인하여 나눠지는 경우 소수로 판단할 수도 있으나 조금 더 생각하면 범위를 줄일 수 있다는 것을 알 수 있습니다. 숫자를 나눌 수 있는 가장 큰 값은 해당 숫자의 루트 값 까지라는 것입니다. 즉, 2부터 해당 숫자까지를 나누는 게 아니라 해당 숫자의 루트까지만 나눠서 확인하면 되는 것입니다. 그렇게 하면 최대로 나누는 횟수는 10억 회가 아니라 10억의 루트 값인 31,622 회가 됩니다. #include #in..
-
JUNGOL 실력키우기 수학1 - 최대공약수와최소공배수 | 최대공약수, 최소공배수보관함 2020. 1. 31. 19:52
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학1의 최대공약수, 최소공배수 시리즈를 풀어보겠습니다. 1658 : 최대공약수와최소공배수 최소 공배수는 간단하게 구할 수 있는데 두 수중 한 수의 배수를 구하면서 다른 수로 나누어 떨어지는 가장 작은 수를 찾으면 됩니다. 이 문제에서 시간이 오래 걸리는 부분은 최대 공약수를 구하는 것인데 먼저 이전에 사용했던 방식으로 두 수의 약수를 모두 구하고 공통되는 가장 큰 약수를 찾는 방법이 있습니다. #include #include #include using namespace std; int main(void) { int a, b; cin >> a >> b..
-
JUNGOL 실력키우기 수학1 - 약수와 배수 | 약수 구하기 | 약수보관함 2020. 1. 31. 19:47
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학1의 약수 시리즈를 풀어보겠습니다. 1071 : 약수와 배수 문제의 설명에 많은 부분이 생략되었는데 다시 문제를 쓰자면 n 개의 정수가 주어지고 미지수 m이 주어질 때 해당 정수 리스트에서 m의 약수의 합과 m의 배수의 합을 출력하는 문제입니다. #include using namespace std; int main(void) { int n; cin >> n; int* arr = new int[n]; for (int i = 0; i > arr[i]; } int m; cin >> m; int sumFactor{ 0 }; ..
-
JUNGOL 실력키우기 수학1 - 숫자의 개수보관함 2020. 1. 31. 19:43
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학1의 숫자의 개수를 풀어보겠습니다. 1430 : 숫자의 개수 굉장히 쉬운 문제네요. 곱한 결과를 10으로 나눈 나머지를 배열 개수에 추가하고 곱한 결과를 10으로 나누는 것을 반복하면 해결이 가능합니다. #include using namespace std; int main(void) { int numCount[10]{}; int a, b, c; cin >> a >> b >> c; int mul = a * b * c; while (mul > 0) { numCount[mul % 10]++; mul /= 10; } for (int i = 0; i < 1..
-
JUNGOL 실력키우기 수학1 - 곱셈보관함 2020. 1. 31. 19:07
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 수학1의 곱셈을 풀어보겠습니다. 1692 : 곱셈 이 문제는 결과 값만 처음에 저장하고 있다면 중간 과정은 저장할 필요가 없이 바로바로 출력하면 됩니다. #include using namespace std; int main(void) { int a, b; cin >> a >> b; int result = a * b; while (b > 0) { int temp = b % 10; cout
-
JUNGOL 실력키우기 도형만들기2 - 홀수 마방진보관함 2020. 1. 24. 10:49
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 도형만들기2의 홀수 마방진을 풀어보겠습니다. 2074 : 홀수 마방진 이전의 문제를 보다 이 문제를 보니 굉장히 친절한 것 같습니다. x 혹은 y가 0보다 작아지면 n - 1로 이동하도록 하는 것만 주의하면 어려울 게 없는 문제입니다. #include using namespace std; int arr[101][101]; int main(void) { int n; cin >> n; int x{ n / 2 }, y{ 0 }; for (int i = 0, num = 1; i < n * n; ++i, ++num) { arr[y][x] = num; if (a..
-
JUNGOL 실력키우기 도형만들기2 - 대각선 지그재그 | 문자마름모보관함 2020. 1. 24. 10:48
기초 다지기에서 배운 내용을 응용하여 문제를 해결해야 하는 실력 키우기입니다. 실력 키우기는 비슷한 문제 유형별로 묶어서 풀어보겠습니다. 이번 포스팅에서는 도형만들기2의 대각선 시리즈를 풀어보겠습니다. 1495 : 대각선 지그재그 이 문제도 방향별로 나눠서 생각하면 된다는 점에서 달팽이 시리즈와 기본적으로는 같은 구조를 가지고 있다고 볼 수 있습니다. 다만 이 문제는 방향이 두가지인 대신 다음으로 넘어가는 부분에서 분기가 발생하는 점이 다릅니다. 방향은 좌하단, 우상단으로 두가지이고 각각 값을 바꿔줘야 하는 경우는 x가 범위를 넘어갔을 때, y가 범위를 넘어갔을 때를 각각 생각해 줘야 합니다. #include using namespace std; void MoveLeftDown(int n); void M..