혜랑's STORY

[2020-2학기 C언어 8주차] 본문

2020 SISS 21기 활동/2학기 C언어

[2020-2학기 C언어 8주차]

hyerang0125 2020. 11. 18. 13:46

#SWEA 8658번 : Summation

SWEA 8658번 문제

- 풀이

10개의 수를 입력받고 각 자리 수의 합을 구한다. 10개의 자리 수의 합 중 가장 큰 값과 가장 작은 값을 출력하면 된다.

이때 자리 수의 합을 구하는 방법으로 while문을 사용하여 num이 0이 아닐때까지 result[i]값에 num을 10으로 나눈 나머지 즉, 일의 자리 수를 더하고 num을 10으로 나눠주는 것을 반복한다.

- 코드

#include <stdio.h>
#include <stdlib.h>

int main() {
	int T, num;
	scanf("%d", &T);

	for (int tc = 1; tc <= T; tc++) {
		int result[10] = { 0 };

		for (int i = 0; i < 10; i++) {
			scanf("%d", &num);
			while (num) {
				result[i] += num % 10;
				num /= 10;
			}
		}

		int max = 0, min = 10000000000000000;
		for (int i = 0; i < 10; i++) {
			if (result[i] > max)
				max = result[i];
			if (min > result[i])
				min = result[i];
		}

		printf("#%d %d %d\n", tc, max, min);

	}

	return 0;
}

 

- 실행결과

SWEA 8658번 실행결과

 

#SWEA 8016번 : 홀수 피라미드

SWEA 8016번 문제

- 풀이

홀수 피라미드의 양 끝 값을 구하는 것은 계차수열로 해결할 수 있다. 가장 왼쪽 값을 first라고 하고 가장 오른쪽 값을 last라고 하였을 때, first = 2 * (n-1) * (n-1) -1, last = 2 * n * n -1을 의미한다. (처음에 자료형을 int라고 했는데 4개밖에 통과를 못해서 long long으로 바꾸었더니 통과하였다. 왜지..)

- 코드

#include <stdio.h>

int main() {
	int T;
	long long n;
	scanf("%d", &T);

	for (int tc = 1; tc <= T; tc++) {
		scanf("%lld", &n);
		
		long long first = 2 * (n - 1) * (n - 1) + 1;
		long long last = 2 * n * n - 1;

		printf("#%d %lld %lld\n", tc, first, last);
	}

	return 0;
}

 

- 실행결과

SWEA 8016번 실행결과

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

[2020-2학기 9주차 C언어]  (0) 2020.11.29
[2020-2학기 C언어 7주차]  (0) 2020.11.09
[2020-2학기 C과제 6주차]  (0) 2020.11.07
[2020-2학기 C과제 4주차]  (0) 2020.10.02
[2020-2학기 C과제 3주차]  (0) 2020.09.21