본문 바로가기

c++

인공지능, 머신러닝 그리고 딥러닝 2016년 3월 인류에게 있어서 잊지못할 하나의 사건이 발생했다. 알파고와 이세돌 9단과의 바둑 경기에서 이세돌 9단이 승리할 것이라는 모두의 예상과는 달리 알파고(AlphaGo)의 불계승으로 경기는 종료되었다. 과연 인공지능이라는 것이 무엇이기에, 사람의 지혜와 경험을 넘어서는 인류최고의 발명품이라고 불리는 것일까. 그동안의 바둑이라는 스포츠는 컴퓨터가 인간을 뛰어넘을 수 없는 창의적 사고활동이라는 말이 있었다. 이유를 구체적 살펴보면 컴퓨터는 전기 신호를 이용하기 때문에 계산이 엄청나게 빠르지만 그래도 바둑의 모든 경우의 수를 전수조사하기 위한 한계가 있다. 네덜란드의 컴퓨터 과학자 존 트럼프는 바둑판의 격자가 2x2인 경우부터 착수 경우의 수와 해당하는 착수 비를 계산하였다. 결과는 다음과 같았다... 더보기
여왕말 문제(N queens problem) 문제 Eight Queens Problem : 8 x 8 의 판에 퀸 8개를 배치할 때 서로를 공격할 수 없게 배치하는 모든 경우의 판을 출력하시오. 아이디어 간단하게 생각해보면 퀸이 놓였을 경우, 또 다른 퀸을 놓을 수 없는 위치를 고려해보자.하나의 퀸이 이동할 수 있는 경로는 퀸의 가로, 세로, 대각선, 역대각선 방향으로만 움직일 수 있다. 이를 그림을 통해 살펴보자. ▣ : 퀸의 위치▩ : 퀸이 이동할 수 있는 경로□ : 퀸이 이동할 수 없는 경로 위에는 총 9개의 예시를 보이고 있다.각각의 예시는 한개의 퀸 배치 때 퀸이 이동할 수 있는 경로와 이동할 수 없는 경로를 표현한다. 그렇다면 다음과 같이 생각하면 문제를 간단하게 해결할 수 있다. 다음과 같이 총 9 x 9 81개의 배치가능 공간을 9개.. 더보기
컴퓨터 프로그래밍 설계 과제#5_HW03 #include #include int FSM_[5][6] = { /* sign digit alfa period special EOS */ /* 상태 0 */{ 2, 1, -19, 3, -10, -12 }, /* 상태 1 */{ -13, 1, -19, 3, -14 , -1 }, /* 상태 2 */{ -15, 1, -19, 3, -14 , -11 }, /* 상태 3 */{ -13, 4, -19, -16, -14 , -11 }, /* 상태 4 */{ -13, 4, -19, -16, -14 , -1 } }; int check_state(int state_num, char input){ int state = 0; int char_state; int input_num = (int)input; if( (input_.. 더보기
컴퓨터 프로그래밍 설계 과제#5_HW02 #include #include #include void p_large_unit(int num); void p_small_unit(int num); void p_han(int num, int num2); int main(void) { char input_num[21]={0,}; int num_data[20]={0,}; int num_data_d2[5][4]={0,}; int num_length=0; scanf("%s", input_num); num_length = strlen(input_num); //printf("숫자의 길이 : %d\n", num_length); //printf("%s\n", input_num); for(int i=0; i 더보기
컴퓨터 프로그래밍 설계 과제#5_HW01 #include #include struct person { char name[50]; char phone[20]; int pay_hour; int work_hour; int total_pay; }; int main(void) { FILE *pfile = NULL; FILE *wfile = NULL; person **p_array = NULL; pfile = fopen("input.txt", "r"); wfile = fopen("output.txt", "w"); int person_num = 0; if(pfile == NULL) { printf("파일을 읽어올 수 없습니다.\n"); exit(0); } else { fscanf(pfile, "%d", &person_num); fflush(stdin); /.. 더보기
컴퓨터 프로그래밍 설계 과제#4_HW03 #include #include #include int validation_data(int tmp_arr[]); int main(void) { int test_case = 0; int data_arr[9][9] = {0,}; int tmp_arr[9] = {0,}; int check_flag = 1; int cnt = 0; scanf("%d", &test_case); for(int case_num=0; case_num < test_case; case_num++) { check_flag = 1; for(int i=0 ;i 더보기
컴퓨터 프로그래밍 설계 과제#4_HW02 #include #include #include int validation_former(char arr[], int a); int validation_latter(char arr[]); int main(void) { int chk_former = 1; int chk_latter = 1; int test_case = 0; scanf("%d", &test_case); fflush(stdin); for(int i=0; i 더보기
컴퓨터 프로그래밍 설계 과제#4_HW01 #include #include #include int main(void) { char **name; char *temp; int test_case, i, j; int check_flag=0; // 1이면 동일한 문자열이 있음, 0이면 없음 scanf("%d", &test_case); fflush(stdin); name = (char **)malloc((test_case)*4); // String의 주소값 배열 할당 //문자 배열 5개씩 동적할당 for (i=0 ; i 더보기