오브젝트 생성, 카메라 이동, 오브젝트와 컴포넌트 연결하기와 같은 유니티 사용법과 클래스와 상속을 포함한 c# 문법을 공부하였다.
if else 판정과 디버그 콘솔 출력, 함수선언 후 거리를 구해보며 c#과 유니티의 구조에 대해 학습하였다. (181pg까지)
부분 문제로 나눈 뒤 재귀를 이용해서 문제를 해결하는 방법이다. 일반 재귀와 다른 점은 부분 문제를 나눌 때 구성 요소들을 비슷한 크기로 절반에 가깝게 나누어 문제를 해결한다. 분할 정복 문제라 판별했을 때는 문제를 해결하기 위한 세 가지 구성 요소를 구현할 방법을 생각해 보아야 한다
분할 정복은 같은 작업을 빠르게 처리해줄 수 있다는 점에서 의의가 있다.
해결한 문제) 4779번 칸토어 집합
#include <stdio.h>
int arr[540000];
void find(int n1, int n2)
{
if (n1 == 1)
{
return;
}
int m = n1 / 3;
find(m, n2);
for (size_t i = 0; i < n2; i++)
{
if ((i / m) % 2 != 0)
{
arr[i] = 1; // 1은 공백 출력
}
}
}
int main(void)
{
int num;
int thd;
int c;
while (1)
{
thd = 1;
c = scanf("%d", &num);
if(c == -1){
break;
}
for (size_t i = 0; i < num; i++)
{
thd *= 3;
}
find(thd, thd);
for (size_t i = 0; i < thd; i++)
{
printf("%c", arr[i] == 0 ? '-' : ' ');
}
printf("\\\\n");
}
return 0;
}
find
함수에서 문제를 3등분하여 더 작은 문제 m
을 계산한다. 문제를 작게 나누는 단계.