목표 대표적인 순차적 자료구조인 배열과 리스트에 대해서 자세히 알아보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 순차적 자료구조(Sequential Data Structure) C언어: 배열(Array) Pythoon: 리스트(List) 정리 개요 이전 포스팅에서 시간 복잡도와 BIG-O 표기법에 대해서 알아보았습니다. 이번 포스팅에서는 순차적 자료구조인 배열과 리스트에 대해서 알아보도록 하겠습니다. 배열과 리스트는 C언어나 파이썬을 이용해서 코딩을 할 때 자주 사용하는 자료구조입니다. 저도 학교에서 과제나 프로젝트를 진행할 때 많이 사용한 자료구조인데요. 특히, 리스트의 경우 많은 연산자가 있어서 유용하게 사용했습니다. 어떤 특징이 있는지 자세히 이해하고 쓰면 더 효율적으로 사용할 수 있을..
목표 콘도 예약 서비스를 제공하는 인공지능 챗봇을 Dialogflow로 구현하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 시나리오 기반 Entity 설계 Intent 설계 결과 정리 개요 이 전 포스팅에서 Dialogflow에 대한 배경 지식과 간단한 사용법에 대해서 알아보았습니다. 참고 : [AI Chatbot] Dialogflow로 인공지능 챗봇 구현하기 - (1) 이번 포스팅에서는 작성한 시나리오를 기반으로 인공지능 챗봇을 직접 구현해보도록 하겠습니다. 시나리오 기반 Entity 설계 우선 챗봇 설계를 하기 전에 시나리오를 확인하겠습니다. 제가 저번에 작성했던 시나리오의 일부입니다. 게시글 작성 당시보다 조금 수정되었습니다. 설계하고자 하는 챗봇은 콘도 예약 뿐 아니라 여러가지 서비스를 제공할..
목표 작성된 시나리오를 기반으로 Dialogflow를 이용해서 인공지능 챗봇을 구현하기 위해 기본 지식과 사용법에 대해서 알아보겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 초기 환경 설정 Intent(의도) Entity(개체 정보) Training Phrases(문장 학습) Fullfillment Integration 정리 개요 콘도 예약을 위한 인공지능 챗봇을 개발하는 것이 궁극적인 목표입니다. 인공지능 챗봇이 무엇인지, 왜 필요한지에 대해 알아보고 어떻게 구현할지 시나리오를 작성했습니다. 인공지능 챗봇을 개발하는 것을 도와주는 챗봇 빌더는 IBM 왓슨, Chatfuel, Dialogflow 등 여러 가지가 있습니다. IBM 왓슨은 고성능이지만 유료이고, Chatfuel은 간단하지만 한글을 지원하..
목표 피보나치 수열의 시간 복잡도(Time Complexity)에 대해서 이해해보도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 피보나치(Fibonacci) 수열이란? 피보나치 수열을 구하는 알고리즘 피보나치 수열 개선하기 피보나치 수열 알고리즘을 통한 시간 복잡도 심화 정리 개요 앞선 포스팅에서 시간 복잡도와 BIG-O 표기법에 대해서 배웠습니다. 이번에는 피보나치 수열의 시간 복잡도를 BIG-O 표기법으로 나타내 보겠습니다. 이를 통해, 어떤 특징이 있는지 알아보겠습니다. 피보나치(Fibonacci) 수열이란? 우선, 피보나치 수열이란 첫째 항, 둘째 항이 1이고 그 뒤의 항은 바로 앞의 두 항의 합인 수열을 뜻합니다. 말로 하면 조금 복잡해보이는데요. 직접 예시를 확인해보겠습니다. F(n)..
문제 왕이 마실 와인 8병 중 하나에 강력한 독이 들어 있다. 한 방울만이라도 치명적이다. 정상 와인을 아무리 섞어도 치명적이다. 다행히 검사장비를 구할 수 있다. 단, 검사는 1시간이 필요하다. 왕은 무조건 1시간 후에 와인을 마실테니 독이 든 병을 찾아내라는 명령을 내렸다. 이를 위해, 몇 대의 검사 장비가 있으면 충분할까? (한 번 검사할 때에는 여러 병의 와인을 섞어 검사가 가능하다.) 풀이 와인 8병을 검사하는데 최소한의 검사 장비로 해결해야하는 문제입니다. 8병의 와인이지만 사실 7병만 검사하면 충분합니다. (모두 독이 안들어있으면 검사안한 병에 독이 있으니까요.) 최대 7대의 검사 장비가 있으면 편하지만, 최소한의 검사 장비로 하는 것이 중요하기 때문에 다음과 같이 생각했습니다. 와인을 일자..
목표 알고리즘 성능평가를 위한 시간 복잡도를 나타내는 BIG-O 표기법에 대해서 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 시간 복잡도의 활용 BIG-O 표기법이란? 정리 개요 3번의 게시글에 걸쳐서 가상 컴퓨터, 시간 복잡도, BIG-O 표기법에 대해서 배우는 이유는 "알고리즘의 성능 평가" 때문입니다. 지금까지 알고리즘의 성능 평가를 하기 위한 환경, 방법에 대해서 배웠습니다. 이번 시간에는 알고리즘의 성능을 증가율 측면에서 바라보는 BIG-O 표기법에 대해서 배워보도록 하겠습니다. 시간 복잡도의 활용 BIG-O 표기법에 이해하기 전에 시간 복잡도를 활용해서 알고리즘의 성능 평가를 어떻게 하는지 알아야 합니다. 저희는 이전 게시글을 통해서 알고리즘을 보고 알고리즘의 수행시간 즉, ..
목표 예시를 통해서 시간 복잡도에 대한 개념을 이해하도록 하겠습니다. 목차 클릭하면 해당 목차로 이동합니다. 예시로 이해하는 시간 복잡도 다양한 함수로 완벽하게 이해하기 정리 개요 저번 포스팅에서 알고리즘의 성능 평가를 위해서 시간 복잡도(Time Complexity)라는 개념을 이용한다고 했습니다. 사람들마다 H/W, S/W 환경이 다르기 때문에 가상 컴퓨터(Virtual Machine)에서 가상 언어로 이루어진 가상 코드를 사용해서 알고리즘의 성능을 평가합니다. 포스팅 마지막에 가상 코드의 예시를 확인하면서 마무리했는데요. 이번 포스팅에서는 마지막에 확인한 코드를 보면서 시간 복잡도를 이해하는 시간을 갖겠습니다. 예시로 이해하는 시간 복잡도 알고리즘의 성능 평가는 알고리즘의 수행 시간을 비교해서 진행..
목표 시간 복잡도를 측정하기 위한 가상 컴퓨터(Virtual Machine)의 개념에 대해서 이해한다. 목차 클릭하면 해당 목차로 이동합니다. 1. 가상 컴퓨터 2. 가상 언어 3. 가상 코드 4. 정리 개요 가상 컴퓨터, 가상 언어, 가상 코드에 대한 개념은 자료구조와 알고리즘의 성능 평가를 위해서 필요합니다. 성능 평가는 알고리즘을 실행하는지 얼마나 걸리는지 수행시간을 측정하는 것입니다. 이 수행시간을 각자의 컴퓨터에서 코드(C, Java ..)로 수행 시간을 측정할 수도 있지만, 개개인의 H/W 성능이 제 각각이고, S/W 경이 모두 다르기 때문에 정확한 성능을 알 수 없습니다. 그렇기 때문에, 자료구조와 알고리즘의 성능 평가는 가상 컴퓨터 위에서 가상 언어를 이용한 가상 코드를 이용해서 진행됩니다..