혜랑's STORY

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

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

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

hyerang0125 2020. 8. 20. 15:33

#SWEA 1989번 : 초심자의 회문 검사

SWEA 1989번 문제

- 풀이

 각 단어의 길이(len)를 구하여 2로 나눈 값인 중앙값을 구한다. 중앙값을 기준으로 대칭에 위치한 문자의 값인 str[i]와str[len-i-1]을 비교하여 틀리다면 0을 return하고, for문을 마쳤다면 회문의 조건을 충족한 것이므로 return 1을 한다.

#include <stdio.h>
#include <string.h>

int check(char* str) {
	int len = strlen(str);
	for (int i = 0; i < len / 2; i++) {
		if (str[i] != str[len - i - 1]) {
			return 0;
		}
	}
	return 1;
}

int main() {
	int t;
	scanf("%d", &t);
	
	char* str;
	for (int tc = 1; tc <= t; tc++) {
		scanf("%s",str);
		printf("#%d %d\n", tc, check(str));
	}

	return 0;
}

 

- 실행결과

SWEA 1989번 실행결과

#SWEA 1961번 : 숫자 배열 회전

SWEA 1961번 문제

- 풀이

첫 번째 그림 : 입력받은 수의 모양 / 두 번째 그림 : 90도 회전 / 세 번째 그림 : 180도 회전 / 네 번째 그림 : 270도 회전

 위 그림은 3*3크기의 예시이다. 첫 번째는 입력받은 그대로를 그린 것이고, 나머지는 각각 90도, 180도, 270도를 회전시킨 모습니다. 이 모양을 바탕으로 식을 만들어 본다면,

  1. 90도 회전 : a[3-1-j][i]
  2. 180도 회전 : a[3-1-i][3-1-j]
  3. 270도 회전 : a[j][3-1-i]

이라 표현할 수 있다. 

 즉, 완전한 식으로 옮기자면

  1. 90도 : a[num-1-j][i]
  2. 180도 : a[num-1-i][num-1-j]
  3. 270도 : a[j][num-1-i]

라는 것을 알아낼 수 있다.

#include <stdio.h>

int main() {
	int tcase;
	scanf("%d", &tcase);
	int num;
	int a[7][7];

	for (int tc = 1; tc <= tcase; tc++) {
		scanf("%d", &num);
		for (int i = 0; i < num; i++) {
			for (int j = 0; j < num; j++) {
				scanf("%d", &a[i][j]);
			}
		}

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

- 실행결과

SWEA 1961번 실행결과

 

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

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