프로그래머스 쿼드압축 후 개수 세기 (JavaScript, 구현)
·
코딩테스트/프로그래머스
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/68936문제 설명더보기0과 1로 이루어진 2n x 2n 크기의 2차원 정수 배열 arr이 있습니다. 당신은 이 arr을 쿼드 트리와 같은 방식으로 압축하고자 합니다. 구체적인 방식은 다음과 같습니다.당신이 압축하고자 하는 특정 영역을 S라고 정의합니다.만약 S 내부에 있는 모든 수가 같은 값이라면, S를 해당 수 하나로 압축시킵니다.그렇지 않다면, S를 정확히 4개의 균일한 정사각형 영역(입출력 예를 참고해주시기 바랍니다.)으로 쪼갠 뒤, 각 정사각형 영역에 대해 같은 방식의 압축을 시도합니다.arr이 매개변수로 주어집니다. 위와 같은 방식으로 arr을 압축했을 때, 배열에 최종적으로 남는 ..
프로그래머스 소수 찾기 (JavaScript, 백트래킹)
·
코딩테스트/프로그래머스
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42839문제 설명더보기문제 설명한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.제한사항numbers는 길이 1 이상 7 이하인 문자열입니다.numbers는 0~9까지 숫자만으로 이루어져 있습니다."013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.입출력 예numbers return"17"3"011"2입출력 예 설명예제 #1[1,..
프로그래머스 두 큐 합 같게 만들기 (JavaScript, 투 포인터)
·
코딩테스트/프로그래머스
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118667문제 설명더보기문제 설명길이가 같은 두 개의 큐가 주어집니다. 하나의 큐를 골라 원소를 추출(pop)하고, 추출된 원소를 다른 큐에 집어넣는(insert) 작업을 통해 각 큐의 원소 합이 같도록 만들려고 합니다. 이때 필요한 작업의 최소 횟수를 구하고자 합니다. 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주합니다.큐는 먼저 집어넣은 원소가 먼저 나오는 구조입니다. 이 문제에서는 큐를 배열로 표현하며, 원소가 배열 앞쪽에 있을수록 먼저 집어넣은 원소임을 의미합니다. 즉, pop을 하면 배열의 첫 번째 원소가 추출되며, insert를 하면 배열의 끝에 ..
Next.js 프로젝트 상세 페이지 첫 클릭 지연 개선
·
프로젝트/Portfolio 사이트 개발
Projects 목록에서 "자세히 보기" 버튼을 처음(또는 오랜만에) 클릭하면 모달이 바로 나타나지않고 몇 초간 기다리는 문제가 발생했다.기존에 SSR > ISR 형태로 개선을 진행을 했는데 지연 문제가 해결되지 않았다. 특히 다음과 같은 패턴이 계속 발생했다.첫 번째 상세 페이지 접근 > 느림두 번째 이후 접근 > 빠름 처음에는 DB 조회나 렌더링이 오래 걸리는 것으로 생각했는데, 실제 조회하는 데이터가 많지 않음에도 불구하고 렌더링이 오래 걸리는 문제가 발생했다.기존 구조프로젝트 카드는 메인 페이지에서 서버 컴포넌트를 통해 조회한다.const projects = await prisma.project.findMany({ include: { info: true, tasks: true, },..
프로그래머스 2개 이하로 다른 비트 (JavaScript)
·
코딩테스트/프로그래머스
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/77885#문제 설명더보기양의 정수 x에 대한 함수 f(x)를 다음과 같이 정의합니다.x보다 크고 x와 비트가 1~2개 다른 수들 중에서 제일 작은 수예를 들어,f(2) = 3 입니다. 다음 표와 같이 2보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 3이기 때문입니다.수 비트 다른 비트의 개수2000...0010 3000...00111f(7) = 11 입니다. 다음 표와 같이 7보다 큰 수들 중에서 비트가 다른 지점이 2개 이하이면서 제일 작은 수가 11이기 때문입니다.수 비트 다른 비트의 개수7000...0111 8000...100049000...1001310000..
프로그래머스 가장 큰 수 (JavaScript, 문자열)
·
코딩테스트/프로그래머스
링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42746# 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명더보기0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solutio..
[AI 에이전트 엔지니어링] 8장 예제 코드 분석 - ray_supply_chain_multi_agent.py
·
AI/AI 에이전트 엔지니어링
`ray_supply_chain_multi_agent.py` 는 공급망/물류 도메인을 예시로,슈퍼바이저가 요청을 보고 어떤 전문가에게 넘길지 결정하고전문가는 Ray 액터로 구현되어 있고각 세션(`operation_id`)마다 전문가 액터가 격리되어 생성된다는 구조를 가진 멀티 에이전트 시스템이다. 단순히 "멀티 에이전트 = LLM 여러 번 호출"이 아니라, Ray라는 분산 실행 프레임워크 위에서 에이전트를 어떻게 배치하고 격리하는가를 보여주는 예시이다.전체 코드 [더보기] 클릭링크 : https://github.com/TeeDDub/AI-Agent-Engineering/blob/main/ch08/ray_supply_chain_multi_agent.py AI-Agent-Engineering/ch08/ray..
[AI 에이전트 엔지니어링] 7장 예제 코드 분석 - experiential_learning.py
·
AI/AI 에이전트 엔지니어링
https://github.com/TeeDDub/AI-Agent-Engineering/blob/main/ch07/experiential_learning.py AI-Agent-Engineering/ch07/experiential_learning.py at main · TeeDDub/AI-Agent-EngineeringContribute to TeeDDub/AI-Agent-Engineering development by creating an account on GitHub.github.com7장에서 에이전트가 단순히 주어진 작업을 수행하는 것을 넘어, 자신이 수행한 경험을 바탕으로 다음 행동을 개선하는 방법에 대해 살펴봤다. 에이전트가 경험을 통해 학습한다고 하면 흔히 모델을 학습시키거나 파인튜닝하는 방식을..
[AI 에이전트 엔지니어링] 13장. 인간과 에이전트의 협업
·
AI/AI 에이전트 엔지니어링
에이전트가 점점 더 자율적으로 일하게 된다면, 사람의 역할은 어떻게 달라질까? 지금까지 AI 에이전트를 만드는 방법부터 시작해서 멀티 에이전트 시스템, 평가와 측정, 운영 환경 모니터링, 지속적인 개선, 보안까지 살펴봤다. 그렇다면 마지막으로 생각해 봐야 할 부분이 있다. 에이전트가 점점 더 많은 일을 할 수 있게 된다면 "사람은 어떤 역할을 해야 할까?" 처음에는 에이전트가 단순한 작업만 수행했기 때문에 사람이 직접 지시하고 모든 결과를 검토해야 했다.하지만 에이전트의 성능이 높아지면서 이제는 사람이 모든 과정을 직접 관리하지 않아도 된다.직접 실행 > 검토 > 감독 > 협력 > 거버넌스 이처럼 사람의 역할도 에이전트의 자율성이 높아지는 만큼 변화하게 된다. 13장에서는 사람과 에이전트의 역할이 어떻게..
[AI 에이전트 엔지니어링] 12장. 에이전틱 시스템 보안
·
AI/AI 에이전트 엔지니어링
에이전트가 자율적으로 행동할 수 있다면, 그만큼 보안도 더 중요하다. 에이전트는 사용자의 요청을 받아 단순히 답변만 생성하는 시스템이 아니다.상황을 판단하고, 계획을 세우고, 다양한 도구를 호출하면서 실제 환경에 직접 행동할 수 있다.사용자 요청 > LLM 판단 > 계획 수립 > 도구 호출 > 외부 시스템 접근 > 실제 작업 수행 이러한 자율성이 에이전트의 가장 큰 장점이지만, 반대로 보안 측면에서는 새로운 위험을 만들어낸다. 잘못된 지시를 받으면 예상하지 못한 방식으로 행동할 수 있고, 악의적인 입력이 들어오면 에이전트가 가진 권한을 이용해 실제 시스템에 영향을 줄 수도 있다.또한 에이전트는 LLM, 데이터, 도구, 외부 시스템 등 여러 요소가 연결되어 있기 때문에 하나의 취약점이 다른 계층으로 전파될..
[AI 에이전트 엔지니어링] 11장. 지속적인 개선
·
AI/AI 에이전트 엔지니어링
에이전트는 한 번 만들어서 배포한다고 끝나는 시스템이 아니다. 특히 멀티 에이전트 시스템으로 확장되면 여러 에이전트가 서로 협력하고, 다양한 도구를 호출하면서 시스템은 점점 복잡해진다.그만큼 예상하지 못했던 문제도 많이 발생할 수 있다. 어떤 에이전트는 잘못된 도구를 선택할 수도 있고, 특정 상황에서만 잘못된 답변을 만들 수도 있다.각각의 컴포넌트는 정상적으로 동작했지만 전체적은 흐름을 연결했을 때는 원하는 결과가 나오지 않을 수도 있다. 그래서 중요한 것은 문제가 발생하지 않도록 만드는 것만이 아니다.문제가 발생했을 때 그 문제를 빠르게 발견하고, 원인을 분석하고, 개선한 뒤 다시 시스템에 반영하는 과정이 필요하다. 11장에서는 이러한 과정을 지속적인 개선 (Continuous Impovement) 라..
AI 에이전트 엔지니어링 10장: 운영 환경 모니터링
·
AI/AI 에이전트 엔지니어링
에이전트를 배포했다면 이제 제대로 동작하고 있는지 어떻게 알 수 있을까? 에이전트 시스템은 개발 환경에서 잘 동작한다고 끝나는 것이 아니다. 실제 서비스 환경에서는 수많은 사용자가 다양한 형태로 질문을 하고, 에이전트는 그에 따라 서로 다른 도구를 선택하고 다른 실행 경로를 거치게 된다. 특히 LLM은 같은 입력에도 항상 동일한 결과를 내지 않는 확률적인 시스템이기 때문에, 기존 소프트웨어처럼 단순히 서버가 정상적으로 동작하는지만 확인해서는 실제 서비스 품질을 판단하기 어렵다. 예를 들어 도구 호출은 성공했고 서버에서도 에러가 발생하지 않았지만, 에이전트가 잘못된 도구를 선택했을 수도 있다.LLM이 자연스러운 답변을 생성했지만 사실과 다른 내용을 포함할 수도 있고, 계획의 일부는 성공했지만 최종적으로 사..