혜랑's STORY

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

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

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

hyerang0125 2020. 8. 7. 00:34

# 1948번 : 날짜 구하기

SWEA 1948번 문제

- 풀이

 각 달의 마지막 날짜들을 담은 배열 date를 만들어 둔다. (달과 달 사이의 날짜들을 구하기 위함.) 그 뒤 날짜의 차이를 먼저 구하고, for문을 이용하여 달과 달 사이의 날짜를 구한다.

- 코드

#include <stdio.h>

int main() {
	int date[12] = { 31, 28, 31, 20, 31, 30, 31, 31, 30, 31, 30, 31 };

	int T;
	scanf_s("%d", &T);

	for (int i = 1; i <= T; i++) {
		int m1, d1, m2, d2;
		scanf_s("%d %d %d %d", &m1, &d1, &m2, &d2);

		int day = d2 - d1 + 1;
		for (int i = m1; i < m2; i++)
			day += date[i-1];

		printf("#%d %d\n", i, day);
	}
	return 0;
}

 - 실행결과

SWEA 1948번 실행결과

#1959 : 두 개의 수

SWEA 1959번 문제

- 풀이

 x와 y의 크기를 비교하는 이유는 칸을 미뤄서 생각하기 위함이다. 즉, 짧은 배열의 k번째와 긴 배열의 k+j의 배열을 곱하는 경우를 만들어 주기 위하여 이중 for문을 사용하였고, 그 중 바깥 for문의 탈출조건을 x - y +1 또는 y - x + 1로 두 배열의 길이의 차만큼 실행 할 수 있도록 한다.

- 코드

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

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

	for (int i = 1; i <= T; i++) {
		int x, y;
		scanf_s("%d %d", &x, &y);

		int* A = (int*)malloc(sizeof(int) * x);
		int* B = (int*)malloc(sizeof(int) * y);

		for (int j = 0; j < x; j++) scanf_s("%d", &A[j]);
		for (int j = 0; j < y; j++) scanf_s("%d", &B[j]);

		int max = -9999999;
		if (y > x) {
			for (int j = 0; j < y - x + 1; j++) {
				int sum = 0;
				for (int k = 0; k < x; k++) sum += A[k] * B[k + j];
				if (sum > max)  max = sum;
			}
		}
		else {
			for (int j = 0; j < x - y + 1; j++) {
				int sum = 0;
				for (int k = 0; k < y; k++) sum += A[k+j] * B[k];
				if (sum > max)	max = sum;
				
			}
		}

		printf("#%d %d\n", i, max);
	}
    return 0;
}

- 실행결과

SWEA 1959번 실행결과

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

[여름방학 7주차 C과제]  (0) 2020.08.20
[여름방학 6주차 C과제]  (0) 2020.08.15
[여름방학 4주차 C과제]  (0) 2020.08.02
[여름방학 3주차 C과제]  (0) 2020.07.24
[여름방학 2주차 C과제]  (0) 2020.07.15