정보 19

나이스 api에서 급식, 시간표 가져와서 카카오톡 자동 전송하는 프로그램

주변 편의점 위치를 카카오톡으로 자동 전송하는 프로그램 (https://minseob.tistory.com/17) 을 완성한 후 카카오톡 자동전송 기능을 이용한 프로그램을 더 만들고 싶어졌다. 그리하여 이번에는 당일의 급식과 시간표를 카카오톡으로 자동 전송하는 프로그램을 제작하게 되었다. 이 프로그램으로 실제로 아침마다 반톡방에 급식과 시간표를 자동으로 전송할 계획이다. 전체 프로그램 코드 : https://github.com/MinseobKimm/NeisApiCrawlerWithKakao GitHub - MinseobKimm/NeisApiCrawlerWithKakao Contribute to MinseobKimm/NeisApiCrawlerWithKakao development by creating an..

정보/Python 2021.12.08

주변 편의점 위치를 카카오톡으로 자동 전송하는 프로그램

학교 현장체험학습 자유주제탐구로 위와 같은 프로그램을 Python으로 만들게 되었다. 제주도로 현장체험학습을 가서 친구들이 있는 톡방에 주변 편의점 위치를 자동으로 전송해주려는 목적으로 제작하였다. 전체 프로그램 코드 : https://github.com/MinseobKimm/PythonCrawlerWithKakao GitHub - MinseobKimm/PythonCrawlerWithKakao Contribute to MinseobKimm/PythonCrawlerWithKakao development by creating an account on GitHub. github.com 1. ip주소 이용하여 현재 위치 위도와 경도 값 받아오기 ip주소를 통해 위도 경도 값을 json 형태로 보내주는 ip-ap..

정보/Python 2021.12.07

[자작 게임] Journey to a star

정보과목의 C언어 콘솔 게임 제작 수행평가 겸, 교내 IT 컨텐츠 경진대회 겸 간단한 게임을 제작해보았다. 코드와 실행파일은 깃허브에 올려두었다. https://github.com/MinseobKimm/Journey-to-a-star GitHub - MinseobKimm/Journey-to-a-star: using Astar 2d simple console game using Astar 2d simple console game. Contribute to MinseobKimm/Journey-to-a-star development by creating an account on GitHub. github.com 작품명 Journey to a star 작품주제 Astar 알고리즘을 이용한 2D타일맵 게임 0. ..

정보/C 2021.11.01

병합정렬 알고리즘

병합 정렬(merge sort)은 합병정렬으로도 불리며 시간 복잡도 $O(nlogn)$ 를 가지는 굉장히 빠른 정렬 알고리즘이다. 과정은 다음과 같다. 1. 분할 2. 정복 3. 결합 4. 복사 각 과정에 대해 하나씩 설명해 보겠다. 가장 먼저 분할은 정렬되지 않은 배열을 두 부분으로 잘라서 두 개의 부분 배열로 분할하는 과정이다. 만약 배열의 원소 개수가 홀수인 경우에는 크기가 비슷하도록 분할한다. 9개면 4개, 5개로 분할할 수 있다. 두 번째 과정은 정복이다. 정복은 분할한 각 부분 배열을 재귀적으로 병합 정렬하는 과정이다. 즉, 분할한 두 개의 배열에 대하여 또다시 분할, 정복, 결합, 복사를 거치도록 하는 것이다. 분할, 정복 두 과정을 c언어 코드로 설명하자면 다음과 같다. void merge..

정보/알고리즘 2021.10.17

A* 알고리즘(A star)

A*알고리즘은 출발 노드에서부터 목표 노드까지 가는 최단 경로를 찾아내는 그래프 탐색 알고리즘 중 하나이다. 휴리스틱 방법을 이용하여 최단 경로를 도출해낸다. -개별 노드에 대한 평가함수(각 노드의 가중치를 평가) f(n)=g(n)+h(n) f(x) : 차후 경로 도출을 위한 함수 g(x) : 출발 노드로부터 현재 노드 n까지의 경로 가중치 h(n) : 현재 노드 n으로부터 목표 노드까지의 추정 경로 가중치 -알고리즘의 과정 출발노드를 OPEN List에 삽입->OPEN List에서 pop()하여 f(n)으로비용평가->CLOSED List 삽입 (이 과정을 종료노드까지 반복) -A*알고리즘 슈도코드 pq.enqueue(start.node, g(start_node)+h(start_node))// 우선순위 ..

정보/알고리즘 2021.10.13

OpenCV image를 grid-based tiles로 변환하기

이전 글 : OpenCV-python를 이용하여 Unrailed! 윈도우 창 캡쳐하기 https://minseob.tistory.com/7 OpenCV를 이용하여 게임 화면을 캡쳐한 다음에는 이 화면을 에이전트가 맵을 파악할 수 있도록 grid-based tiles로 변환해주는 작업이 필요하다. 그전에 이전 글에서 캡쳐한 Unrailed! 윈도우 창에서 물체를 인식할 수 있도록 변환해주는 작업이 필요하다. cut_image함수로 화면에서 인식에 필요한 맵 부분을 잘라낸다. def cut_image(im): """Cut the image""" im = rotate(im, -8) x, y = 0, 125 h, w = 320, 800 im = im[y:y + h, x:x + w] rows, cols = im...

정보/R&E 2021.08.30

OpenCV-python를 이용하여 Unrailed! 윈도우 창 캡쳐하기

이전 글 : 2021 정보 R&E 주제 소개 https://minseob.tistory.com/6 게임을 플레이하는 ai를 만들려면 가장 먼저 게임 화면을 실시간으로 캡처해서 ai가 인식할 수 있도록 해야 한다. 이를 수행해주는 것이 바로 OpenCV이다. OpenCV는 Open Source Computer Vision의 약자로 실시간으로 이미지를 프로세싱하는 라이브러리이다. 파이썬 파일은 window화면을 캡처해주는 class가 담긴 window.py와 main.py 두 개를 만든다. Unrailed! 창을 캡처하기 위해서는 OpenCV 뿐만 아니라 win32gui, pyautogui, numpy 라이브러리가 필요하다. 이들 라이브러리를 설치한 후 import 해준다. import win32gui im..

정보/R&E 2021.07.14

2021 정보 R&E 주제 소개

R&E 는 Research & Education의 약자로 1년에 걸쳐서 하는 탐구 프로젝트를 말한다. 현재 재학 중인 전북과학고등학교에서는 정보, 수학, 물리, 화학, 생물, 지학 중 한 과목에 대하여 모든 1학년 학생이 4명이 한 조가 되어 각 조마다 R&E 탐구활동을 하고 있다. 그 중 나는 정보 R&E에서 부장을 맡고 있으며, 우리 조의 주제는 다음과 같다. "협동 게임을 이용한 강화학습 모델 개발" 개발 언어는 Python을 사용할 것이고, 개발 도구는 Pycharm 과 Google colab을 사용할 계획이다. 협동 게임은 "Unrailed!"라는 스팀게임을 택하였다. 강화학습은 기계학습의 한 종류로 어떤 환경 안에서 에이전트(행동의 주체)가 보상이 최대화되도록 행동하는 방법을 의미한다. 초기의..

정보/R&E 2021.07.13