[백준] BOJ1463, 1로 만들기
·
IT, Digital
서론 지난 코딩 포스팅에서는 백준 2566을 풀었다. 이번 포스팅에서는 다이나믹 프로그래밍(DP)을 이용한 1로 만들기를 풀어보고자 한다. 난이도는 백준 실버3에 해당한다. 풀이 과정에 대해서 설명을 하고 하단에는 BOJ 1463 코드를 첨부하겠다. 다이나믹 프로그래밍에 대한 포스팅을 보려면 아래 포스팅으로 가면 된다. 다이나믹 프로그래밍 DP 알고리즘 파이썬 코딩테스트 (11)목차  서론지난 포스팅에서는 그리디 Greedy 문제인 로프 문제를 포스팅했다. 풀긴 풀었지만 고전했기에 아쉬웠던 문제였다. 아무튼 오늘은 DP 문제를 풀어보고자 한다. DP는 다이나믹 프로그래quiseol.com 백준1463, 1로 만들기 풀이 과정비슷한 문제로는 피보나치 문제가 있다. 피보나치는 단순 재귀로도 구현 가능하다. ..
[백준] BOJ2566, 최댓값
·
IT, Digital
서론지난 포스팅에서는 백준 1316을 풀어보았다. 해당 포스팅이 궁금하다면 여기로 가면 된다. 이번에는 그거보다는 쉬운 백준 2566 문제를 풀어보고자 한다. 브론즈3에 해당한다. 이번 포스팅 역시 지난 포스팅과 같이 처음에는 문제에 대한 설명과 접근 방식을 얘기하고, 이후에는 접근 방식을 구현한 코드를 작성할 예정이다.백준 2566 풀이 과정9*9 격자판에 0 혹은 자연수가 등장한다고 한다. 최댓값을 찾고 몇 행 몇 열에 위치한 수 인지 구하라고 한다. 딱 문제를 보자마자 든 생각은 최대값을 업데이트해주면서, 갱신될 때마다 해당 행, 열을 따로 저장하면 된다는 생각이다. 인풋의 꼬라지를 보면,3 23 85 34 17 74 25 52 6510 7 39 42 88 52 14 72 6387 42 18 78 ..
[백준] BOJ1316, 그룹 단어 체커
·
IT, Digital
서론오늘부터 차근차근 백준 문제를 풀어보고자 한다. 오늘 풀어볼 문제는 백준 1316이다. 이 문제는 실버 5에 해당하고 정답률은 현재 기준 58.855%다. 리스트를 사용한 문제로 리스트 관련 포스팅은 여기로 가면 되며, 문제를 직접 보고 싶다면 여기로 가면 된다. 백준 링크를 걸어 놓았다. 이번 포스팅에서는 어떻게 접근했고, 코드는 어떻게 했는지 적을 예정이다.  백준 1316 풀이과정 연속해서 나타나는 경우에서 연속의 정의가 애매해서 처음에 뭐지 싶었는데 여기서 연속이라함은 a,b,c와 같은 알파벳의 연속이 아니라(하지만 이 역시 문제로 충분히 나올법하다.) 기존에 사용된 알파벳이 있는지에 대한 연속 여부다. 그래서 abd인 경우는 연속, aaza는 불연속이다. 아무튼 난 이 문제를 보고 크게 세가..
리스트 컴프리헨션 List Comprehension
·
IT, Digital
서론이번 포스팅에서는 리스트 컴프리핸션에 대해서 알아보고자 한다. 배열이면 배열이지 뒤에 컴프리핸션은 뭐냐? 할텐데, 리스트 컴프리핸션은 단순히 선언하는 것이 아니라 계산식, if문 등을 넣어서 새로운 리스트를 만드는 방법이다. 대표적으로 ㅇ가지가 있는데 거기에 대해서 설명하고자 한다.1. 단순 리스트 컴프리헨션단순 리스트 컴프리헨션은 arr = [ 표현식 for 변수 in ]이다. 표현식에는 식이나, 간단한 함수를 넣을 수 있다. 예를들어 arr= [int(input() for _ in range (5)] 가 있다. iteration만큼 input을 받아 리스트를 만드는 것이다. int(input()) 대신에 x**2 같은 함수를 넣을 수도 있다.2. if문을 활용한 리스트 컴프리헨션if문을 활용하는 ..
Retrieval Augmented Generation(RAG) 복습 (6) 사전을 사용해서 질문 바꾸기
·
IT, Digital
서론우리가 제대로 LLM을 만들었음에도, 대답이 썩 만족스럽지 않은 경우가 있다. 물론 제대로의 제대로가 진정한 의미에서의 제대로가 아닐수도 있지만, 어느정도 검증된 모델을 향연으로 코드가 제대로 돌아가는 걸 확인한 이상 가장 떠오르는 변수는 바로 '사용자의 질문'이다. 개떡같이 물어도 찰떡같이 알아듣는다는 속담이 괜히 있는게 아니다. 그만큼 개떡같이 물어보는 사람이 많다는 것이고, 대답하는 사람은 그걸 알아듣고 찰떡같이 대답해야된다. 특히 대답해야되는 사람이 을의 입장이라면... 사용자가 개떡같이 말했을 때 잘 알아들어야된다. 이번 포스팅에서는 이러한 상황때 잘 알아들을 수 있게 dictionary를 작성하는 과정을 가질 것이다.어떤식으로 문제가 발생하는가서론에서 얘기하는 상황에 대해서 알아보도록 하자..
Retrieval Augmented Generation(RAG) 복습 (5) Pinecone
·
IT, Digital
서론이전에는 chroma를 활용해서 진행을 했다. 이번에는 Pinecone을 어떻게 활용하는지에 대해 포스팅을 하려고한다. Pincone의 장점은 무엇이며, Chroma랑 비교되는 부분을 알아보고, 이후에 코드를 통해 어떤식으로 구현하는 지 알아보겠다.Chroma , Pinecone 차이가장 큰 차이는 Chroma는 in-memory 방식을 사용한다는 것이고 Pinecone은 cloud를 이용한다는 것이다. cloud를 사용함으로써 llm 서버를 이전할 때 용이하다고 볼 수 있다. 즉, pinecone을 사용함으로써 database를 클라우드에다가 만드는 것이다. 그러므로 우리가 해야될건 기존 코드에서 database 부분을 수정하는 것이다.Chroma를 사용할때는 아래 코드와 같이 database를 선..
Retrieval Augmented Generation(RAG) 복습 (4) Langchain Hub
·
IT, Digital
서론지난 포스팅에서는 LangChain을 어떻게 활용하는지에 대해 알아보았다. 이번 포스팅에서는 LangChain-Hub를 쓰는걸 실습하고자 한다. 우선 왜 langchain hub를 쓰는가?에 대해 알아보고 이후에는 이것을 어떻게 쓰는지 알아볼 것이다. 지난 포스팅을 보면 유사도 검색 과정에서 페르소나를 주기 위해 prompt를 작성했다. 그런데 Langchain hub는 이러한 prompt를 다양하게 갖고있기에 코드를 짜는 사람이 prompt를 짜지 않아도 된다는 강점이 있다. 그럼 지난 포스팅에서 사용한 것과 이번 포스팅에서 사용하는 것을 비교해보자.similarity_search 이용순서상 RetrivalQA, Langchain-hub가 먼저와야 될 것 같지만 이 부분은 지난 포스팅과 완전히 같으..