본문 바로가기

전체 글14

(리메이크)카카오톡 학식 챗봇을 만들어보자 - 0. 개요 이번 주제는 카카오톡 챗봇을 만드는 것입니다. 예전에 해당 주제로 프로젝트를 하면서 다른 블로거분들에게 많은 도움을 받았습니다. 이번에 다시 만들면서 글로 정리하며 기억을 되새겨보려고 합니다. 혹시나 카카오톡 챗봇을 만들고 싶으신 분이 계시다면 도움이 되었으면 좋겠습니다. 개요인 이번 글은 제 사담이니 아래 네모만 보고 가뿐히 제끼셔도 괜찮습니다. 요약 사용할 언어: javascript(or typescript) 사용할 기술: cheerio, AWS(lambda, DynamoDB, API Gateway, EventBridge) 문제 정의 그 당시 저는 제가 맞닥뜨리던 하나의 불편함에서 이 프로젝트를 시작했습니다. 학식 메뉴를 보기가 불편하다. 얼마나 불편했으면 자세를 고쳐 앉지도 않고 챗봇을 만들었던 걸.. 2023. 3. 23.
프로그래머스 - 당구 연습(js) 어제 프로그래머스에서 자바스크립트로 문제를 풀고 있었는데 푼 사람이 0인, 새로운 문제가 올라왔다. 난이도도 1이길래 빠르게 풀고 넘어가려고 했는데, 은근 생각할 게 있어서 시간이 걸렸다. 그리고 무엇보다 재밌었다. 난이도가 1인 이유는 수학 공식만 알면 쉽게 풀 수 있기 때문이라고 추측한다.. 공식을 모르면 굉장히 어렵고, 나도 오랜만에 구글링으로 수학 공식을 검색해서 풀었다. 문제에 필요한 개념을 알기 위해 문제 내용 중 다음 조건에 주목해야 한다. 단, 머쓱이가 친 공이 벽에 부딪힐 때 진행 방향은 항상 입사각과 반사각이 동일하며, 만약 꼭짓점에 부딪힐 경우 진입 방향의 반대방향으로 공이 진행됩니다. 처음엔 별 거 아닌 조건이라고 생각하고 직각 삼각형의 빗변 구하는 공식으로 풀려고 했으나, 그렇게 .. 2023. 3. 17.
자바스크립트로 알고리즘 풀기 여지껏 자바 언어로 알고리즘 문제를 풀었다. 첫 웹 개발을 자바로 배워서 스프링 개발자를 희망했기에 C++로 풀던 알고리즘을 자바로 변경했었다. 백준 알고리즘 강의를 들었을 때에도 자바로 배워서 다른 언어로 풀 생각을 하지 않았다. 근데 부스트캠프를 수강하고, 노드 개발자가 되겠다고 생각을 굳힌 요즘 문득 이런 생각이 들었다. '노드 개발자로 취업을 하면 실무에서도 자바스크립트나 타입스크립트를 쓸텐데 자바스크립트에 익숙해져야 하지 않을까?' 그래서 지금부터라도 자바스크립트로 문제를 풀려고 한다. 무엇보다 긴 시간동안 자바로만 알고리즘을 풀어서 약간 매너리즘을 느꼈는데 자바스크립트로 풀어보니 신선하야 새로운 매력이 있다. 공교롭게도 지금 읽고 있는 알고리즘 책이 자바로 쓰였지만 알고리즘이라는 것은 언어에 .. 2023. 3. 15.
동적 계획법(Dynamic Programming) 동적 계획법 동적 계획법은 부분 문제로 분해할 수 있는 최적화, 탐색, 계산 문제를 해결하기 위한 일반적인 방법을 말한다. 동적 계획법은 작은 문제 여러 개를 합쳐서 큰 문제를 풀 수 있다. 이 때, 동일한 하위 문제가 반복해서 발생할 수 있다. 따라서 동적 계획법을 효율적으로 작성하려면 반복해서 발생하는 하위 문제의 결괏값을 캐싱해 두어야 한다. 동적 계획법의 기본 개념을 익히기 위해 피보나치 수열이 자주 사용된다. 피보나치 수열 피보나치 수열은 0, 1로 시작하고 그 다음 숫자부터는 이전 두 숫자의 합이다. 따라서 0, 1, 1, 2, 3, 5, 8, ...이 된다. 수학적으로 표현하면 다음과 같다. F(0) = 0 F(1) = 1 F(n) = F(n-1) + F(n-2) 코드로 표현하면 다음과 같다.. 2023. 2. 6.