혜랑's STORY

[여름방학 2주차 C과제] 본문

2020 SISS 21기 활동/여름방학 C언어

[여름방학 2주차 C과제]

hyerang0125 2020. 7. 15. 14:48

# SWEA 1984 : 중간 평균값 구하기

SWEA 1984 문제

#풀이

 이 문제를 해결하기 위하여 먼저 생각했던 점은 최대 수와 최소 수를 알아내는 것이었다. 내가 최대 수와 최소 수를 알아내기 위하여 사용한 방법은 수를 정렬하는 것이었고 정렬된 수에서 가장 앞의 수가 최소 수 가장 뒤의 수가 최대 수가 되었다. 여러 정렬 중 내가 사용한 정렬은 버블정렬로 배열 내의 두개의 인접한 인덱스를 비교하여 더 큰 숫자를 뒤로 보내 차곡차곡 쌓아 정렬하는 방법이다. (버블정렬은 코드 중 mySort()이다.) 이러한 방식으로 최대, 최소 수를 거르고 나머지 값들의 평균을 구해주었다.

#코드

#include <stdio.h>

//가장 큰값과 가장 작은 값을 찾아내기 위하여 숫자를 정렬한다.
void mySort(int* X[]) {
	int temp;
	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 10 - i - 1; j++) {
			if (X[j] > X[j + 1]) {
				temp = X[j];
				X[j] = X[j + 1];
				X[j + 1] = temp;
			}
		}
	}
}

int main() {
	int Tcase;
	scanf_s("%d", &Tcase);
	int* result = (int*)malloc(sizeof(int) * Tcase);

	for (int i = 0; i < Tcase; i++) {
		int num[10], sum=0;
		for (int j = 0; j < 10; j++) {
			scanf_s("%d", &num[j]);
		}
		//숫자 순서대로 정렬하기
		mySort(&num);
		//가장 작은 값과 가장 큰 값을 제외한 평균 구하기
		for (int j = 1; j < 9; j++) {
			sum += num[j];
		}
		result[i] = sum / 8;
	}

	for (int i = 1; i <= Tcase; i++) {
		printf("#%d %d\n", i, result[i - 1]);
	}
    return 0;
}

 #실행결과

SWEA 1984번 실행결과

#SWEA 1945 : 간단한 소인수분해

SWEA 1945번 문제

#풀이

 소인수분해를 하기 위하여 2, 3, 5, 7, 11로 나눈 나머지가 0이 될 떄까지 나누어 준다.

#코드

#include <stdio.h>

int main() {
	int Tcase, num;
	scanf_s("%d", &Tcase);

	for (int i = 0; i < Tcase; i++) {
		scanf_s("%d", &num);
		int a = 0, b = 0, c = 0, d = 0, e = 0;

		while (num % 2 == 0) {
			num /= 2;
			a += 1;
		}
		while (num % 3 == 0) {
			num /= 3;
			b += 1;
		}
		while (num % 5 == 0) {
			num /= 5;
			c += 1;
		}
		while (num % 7 == 0) {
			num /= 7;
			d += 1;
		}
		while (num % 11 == 0) {
			num /= 11;
			e += 1;
		}
		printf("#%d %d %d %d %d %d\n", i+1, a,b,c,d,e);

	}
	
	return 0;
}

#실행결과

SWEA 1945번 실행결과

 

'2020 SISS 21기 활동 > 여름방학 C언어' 카테고리의 다른 글

[여름방학 6주차 C과제]  (0) 2020.08.15
[여름방학 5주차 C과제]  (0) 2020.08.07
[여름방학 4주차 C과제]  (0) 2020.08.02
[여름방학 3주차 C과제]  (0) 2020.07.24
[여름방학 1주차 C과제]  (0) 2020.07.09