본문 바로가기
반응형
SMALL

정올 문제풀이13

정올 1002 : 최대공약수, 최소공배수 응용 ** 두 수의 곱 = 두 수의 최대공약수 * 최소공배수 유클리드 호제법 이용 조건: A>B 두 수 A와 B의 최대공약수 = B와 r(A를 B로 나눈 나머지)의 최대공약수 즉, GCD(A,B) = GCD(B,r) ex> GCD(30,18) = GCD(18,12) = GCD(12,6) = GCD(6,0) 두개의 숫자만 주어진 상황과 비슷한 형식으로 진행하면 된다. 예를 들어 두 개의 수 A와 B의 최대공약수를 D라고 하면, 세 개의 수 A,B,C의 최대공약수는 D와 C의 최대공약수와 같다. 아래는 재귀함수를 이용하여 구현해보았다. 최소공배수를 구하는 경우도 같은 방법으로 진행된다. 두 수 A,B가 주어졌을 때, A와 B의 곱 = A와 B의 최대공약수 * A와 B의 최소공배수 이다. 즉, lcm(A,B) = .. 2020. 4. 27.
정올 1658 : 최대공약수, 최소공배수 (+유클리드 호제법) 방법 1: 처음부터 확인해가면서 약수를 구함 -> 숫자가 커지면 시간이 오래걸린다. #include // 최대공약수 int gcd_get(int x, int y) { int res=0; for (int i = 1; i GCD(30,18) = GCD(18,12) = GCD(12,6) = GCD(6,0) #include // 최대공약수 int gcd_get(int x, int y) { if (y == 0)return x; return gcd_get(y, x % y); } int main() { int a, b; scanf("%d %d", &a, &b); int gcd = gcd_get(a, b); int lcm = (a * b) / gcd; printf("%d\n", gcd); printf("%d\n", l.. 2020. 4. 27.
정올 2071 : 파스칼 삼각형 총 세가지 버전. 1. 첫번째 : 가장 일반적인 파스칼의 삼각형 왼쪽 상단부터 채워줌 arr[x][y] = arr[x-1][y] + arr[x-1][y-1] 사용 2. 두번째 : 따로 공백도 출력해주는방법을 사용 왼쪽 하단부터 채워줌 arr[x][y] = arr[x+1][y] + arr[x+1][y-1] 사용 3. 세번째 : 행과 열을 바꿔서 열을 기준으로 채워줌 오른쪽 하단부터 채워줌 arr[y][x] = arr[y][x + 1] + arr[y + 1][x + 1] #include int main() { int n,m; scanf("%d %d", &n,&m); int arr[100][100]; if (m == 1) { for (int i = 0; i < n; i++) { for (int j = 0; j.. 2020. 4. 27.
정올 2809 : 약수 + 버블정렬 - 버블정렬시 이차원 배열 사용 주의 - 처음부터 끝까지 확인하면 시간이 오래걸리므로 제곱근 사용 - 마지막 출력시 겹치는 부분 고려 #include #include void printArr(int a[],int count) { for (int i = 0; i a[j + 1]) { tmp = a[j]; a[j] = a[j + 1]; a[j + 1].. 2020. 4. 27.
반응형
LIST