프로젝트 & 과제 34

[교양] 계량적 사고와 의사 결정

개요 과제 수행 날짜 : 2021.11.19 과제 개요 : '스타듀밸리'에서 효율적으로 농사를 짓기 위해 엑셀을 이용하여 의사 결정 ‘스타듀밸리’란 농사를 짓고 게임 내 NPC들과 호감도를 쌓아가는 게임이다. 그래서 스타듀밸리 유저들의 주목적은 농작물을 팔아서 많은 돈을 버는 것이다. 이 게임은 1년차 봄부터 시작되며, 제한된 땅과 돈을 제공한다. 따라서 유저들은 수많은 작물들을 조합하여 어떤 조합이 가장 높은 수익을 얻을 수 있을지를 고민해야 한다. 스타듀밸리에 대한 간략한 설명을 하자면, 스타듀밸리에서는 4개의 계절이 있으며, 30일이 지나면 다음 계절로 넘어간다. 그렇게 봄부터 시작하여 겨울이 지나면 1년이 지나게 된다. 각 계절마다 키울 수 있는 작물이 다르고 각 작물들은 구매가, 판매가, 수확 ..

나노디그리 - 자연어 처리

개요 프로그래밍 언어 : python 과제 수행 날짜 : 2021.07.05 - 2021.09.03 과제 개요 : 네이버 뉴스의 기사를 분석하여 자연어 처리. 코드 1) 전처리 - 불용어 제거 2) 1차 시각화 - 빈도 분석 결과를 빈도 그래프로 출력 - 결과 3) 2차 시각화 - 워드 클라우드로 빈도 기준 20개 단어 출력 - 결과 결과 분석 사회 분야의 기사 중 다가오는 추석에 관련한 기사를 찾아보았다. 추석이지만 코로나가 계속 유행하고 있는 상황이기 때문에 접종, 방역, 백신과 같은 키워드가 많이 등장한다는 것을 알 수 있다. 그리고 추석과 관련한 선물, 승차권, 예매, 열차 등의 키워드도 많이 등장했다. 빈도 분석 결과, 일반적으로 '추석' 하면 떠오르는 키워드인 모임, 연휴 등의 키워드보다 접종..

[데이터베이스] DB 연동 웹사이트

개요 프로그래밍 언어 : python 과제 수행 날짜 : 2020.11.19 ~ 2020.12.16 과제 개요 : 국립현대미술관에서 제공하는 데이터를 이용하여 데이터베이스를 구성하고, 데이터베이스에 존재하는 전시를 예매하는 페이지를 제작 개발 환경 개발 언어는 python을 사용하고, 웹 프레임 워크로 Flask를, DBMS로 sqlite3을 사용한다. 데이터베이스 데이터의 출처는 국립현대미술관 (http://www.mmca.go.kr/contents.do?menuId=6094005450)으로, 전시 이름, 장소와 같은 기본적인 정보를 담고 있다. 이 데이터를 목적에 맞게 수정하여 사용하였다. 기능 1) 로그인 ① 표시되는 정보 사용자가 이미 회원가입을 한 경우, ID와 PW를 입력하도록 하고, 로그인 ..

[C언어] 구조체 출력

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.12.04 과제 개요 : 구조체에 다음 구조체를 가리키는 포인터를 추가하여 5개의 구조체를 연결한 후, 특정 데이터를 출력 코드 총 5개의 구조체 데이터를 생성한 후, sID가 20으로 시작하는 데이터만 출력한다. #include // 구조체 정의 struct data { char name[10]; char sID[10]; int number; struct data *next; }; int main() { // 구조체 변수 5개를 임의의 값으로 초기화 struct data d1 = { "김길동","20882020",1 }; struct data d2 = { "홍길동","21992020",2 }; struct data d3 = { "마이클","2..

[C언어] 문자열의 마지막 문자 변경

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.12.04 과제 개요 : 포인터 배열을 이용하여 2차원 배열에 저장된 문자열의 마지막 글자를 *로 변경 코드 #include #define N 6 int main() { char *p[N], count; char str[N][10] = { "가나다","123","wxyz","가나다000","78다", "가나다" }; count = 0; while (1) // 포인터 배열 p가 str을 가리키도록 { if (count > N-1) break; p[count] = str[count]; count++; } count = 1; while (count

[C언어] 문자열 배열의 순서를 바꾸는 함수

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.27 과제 개요 : main 함수 내에 있는 문자열 배열의 순서를 바꾸는 함수 코드 #include #define N 2 void change(char str[][100]); int main() { char str[N][100] = { "banana","apple"}; change(str); for (int j = 0; j < N; j++) { printf("%s ", str[j]); } } void change(char str[][100]) { for (int i = 0; i < N / 2; i++) { char tmp[100] = { 0, }; //tmp 초기화 int a = 0; while (1) //앞쪽 문자열을 tmp 배열에 저장..

[C언어] 포인터로 값 복사

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.20 과제 개요 : int a를 가리키는 포인터를 이용하여 a의 값을 b로 복사 코드 #include int main() { int a = 0x1234abcd, b = 0, *p = &a; p = &b; *p = a; printf("%x", b); return 0; } 결과 a를 가리키고 있는 포인터 p를 이용해서 변수 b에 a의 값을 복사하려고 하므로, 먼저 포인터 p가 b를 가리키도록 한다. 그리고 포인터 p가 가리키고 있는 주소의 값을 a의 값으로 바꾸면 b의 자리에 a의 값이 복사되어 저장된다. 변수 선언시 생성된 변수들의 상태. 포인터 p가 a를 가리킨다 p=&b로 포인터 p가 b를 가리키도록 한다 포인터가 가리키고 있는 곳의 값..

[C언어] 포인터로 문자열 복사

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.11.13 과제 개요 : 2개의 문자열이 있을 때, 입력받은 수만큼 한 문자열에서 문자를 복사하여 다른 문자열에 붙여넣기 코드 #include char* strNcpy(char* s1, char* s2, char n) { char *tmp = s1; int c = 0; // s1의 길이를 구하기 위한 변수 char a = 0, b = 0; // 문자열에 접근하기 위한 인덱스 while (s1[a++] != 0) c++; if ((c + 1 == n) && (s2[n] != 0)) return "error"; // 두 번째 예외 a = 0; for (char k = 0; k < n; k++) { if (s1[a] == 0) { return "er..

[C언어] call by value/reference

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.30 과제 개요 : call by value와 call by reference Call by Value #include void swap(int p, int q) { int tmp; tmp = p; p = q; q = tmp; } int main() { int i = 3, j = 5; swap(i,j); printf("%d, %d",i,j); } call by value 방식에서는 swap 함수로 main 함수의 값을 변경할 수 없다. 왜냐하면 swap 함수에서 인수로 받는 변수가 복사본이기 때문이다. 즉, 인수로 변수의 "값"만 전달하였기 때문에 원본인 변수의 값을 바꿀 수 없다. Call by Reference #include void..

[C언어] char 포인터로 배열 읽기

개요 프로그래밍 언어 : C언어 과제 수행 날짜 : 2020.10.16 과제 개요 : char 포인터로 int 배열의 값을 한 바이트씩 읽어서 출력 코드 #include int main() { int data[6] = { 256001,100000000,2147483647,3,4,5}; int i; for (int j = 0; j < 6; j++) { char *p = &data[j]; for (int k = 0; k < 4; k++) { i = (*p &0xFF) +((*(p + 1) & 0xFF) * 256) + (*(p + 2) & 0xFF) * (256*256) + (*(p+3)&0xFF)*(256*256*256); //printf("%3x ", *(p+k)&0xFF); } printf("1차원 배..