읽은 책 정리

    카프카 스키마 레지스트리

    개요스키마의 개념과 유용성카프카와 스키마 레지스트리스키마 레지스트리의 장점스키마 레지스트리 호환성BACKWARD 호환성FORWARD 호환성FULL 호환성정리개요스키마란 정보를 구성하고 해석하는 것을 도와주는 프레임워크나 개념을 의미합니다. 스키마란 개념을 처음 입문하게 되는 계기는 보통 DB를 학습하면서 입니다. DB를 학습하면서 스키마란 데이터베이스의 구조를 정의하고 전반적인 명세와 제약 조건을 기술하는 언어라고 학습하게 됩니다.카프카에서도 스키마란 개념을 활용하여 토픽으로 전송되는 메시지에 대해 미리 스키마를 정의하여 전송함으로서 DB에서 스키마를 활용한 방법과 동일한 효과를 얻을 수 있습니다.카프카에서는 스키마를 활용하기 위해서 스키마 레지스트리라는 개념이 필요합니다. 따라서 이번 글에서는 스키마 ..

    컨슈머의 내부 동작 원리(컨슈머 오프셋, 그룹코디네이터, 스태틱 맴버십,파티션 할당 전략)

    개요컨슈머 오프셋 관리그룹 코디네이터스태틱 멤버십컨슈머 파티션 할당 전략레인지 파티션 할당 전략라운드 로빈 파티션 할당 전략스티키 파티션 할당 전략협력적 스티키 파티션 할당 전략정확히 한 번 컨슈머 동작개요이번 글에서는 카프카의 컨슈머에 대한 동작 원리와 컨슈머 오프셋, 컨슈머들의 파티션 할당 정책과 프로듀서의 정확히 한 번 전송과 결합해 트랜잭션 컨슈머의 내부 동작에 대해서 글을 작성하도록 해보겠습니다.컨슈머 오프셋 관리컨슈머의 동작 중 가장 핵심은 오프셋 관리입니다.컨슈머의 오프셋의 역할은 메시지의 위치를 나타내는것입니다. 이러한 오프셋이 중요한 이유는 컨슈머가 일시적으로 동작을 멈추고 재시작 하는 경우에 새로운 컨슈머가 기존 컨슈머의 역할을 대신하는 경우에 기존 컨슈머의 마지막 메시지 위치부터 새로..

    프로듀서의 내부 동작 원리(파티셔너, 배치)

    파티셔너파티셔너의 라운드 로빈 전략라운드 로빈 전략의 단점을 극복하기 위한 스티키 파티셔닝 전략프로듀서의 배치메시지 전송 방식 정책적어도 한 번 전송(무슨 일이 있어도 적어도 한 번은 전송한다.)최대 한 번 전송(무슨 일이 있어도 한 번만 전송한다.)중복 없이 전송정확히 한 번 전송전송 정책 한 눈에 비교하기 파티셔너프로듀서는 데이터를 전송할 때 send() 메소드를 수행함으로써 프로듀서 → 시리얼 라이저 → 파티셔너를 거쳐 카프 카프카의 Topic으로 전송됩니다.이때 복수개의 Topic중 어떤 Topic으로 메시지 를 전송할 지를 결정해야 하는데 이때 사용하는 것이 파티셔너입니다.파티셔너는 예상치 못한 많은 양의 메시지가 카프카로 들어오는 경우 파티션을 늘릴 수 있는 기능을 제공합니다. 그러나 이러한 ..

    카프카의 내부 동작 원리(리플리케이션,리더, 팔로워, 리더에포크, 컨트롤러,로그)

    카프카 리플리케이션리플리케이션 동작 개요리더와 팔로워복제 유지와 커밋리더와 팔로워의 단계별 리플리케이션 동작리더에포크와 복구컨트롤러컨트롤러의 중요성컨트롤러의 리더 선출 과정로그(세그먼트)로그 세그먼트 삭제로그 세그먼트 컴팩션카프카 리플리케이션고가용성 분산 스트리밍 플랫폼인 카프카는 무수히 많은 데이터 파이프라인중에 정중앙에 위치하는 메인 허브 역할을 합니다.메인 허브 역할을 하는 카프카가 다운되거나 문제가 발생할 경우 정상적으로 동작하지 못한다면 심각한 문제가 발생하게 됩니다.이러한 문제점을 해결할 수 있도록 카프카는 초기 설계 때부터 일시적으로 브로커에서 장애가 발생해도 안정적으로 운영될 수 있도록 리플리케이션을 수행하게 됩니다.이번글에서는 리플리케이션에 대해 살펴보며 추가적으로 리더, 팔로워의 역할과..

    카프카 기본 개념과 구조

    개요이번 글에서는 카프카의 기본 개념과 구조에 대해 포스팅할 계획입니다.카프카의 처리량을 높이기 위해 설계된 분산 시스템, 페이지 캐시, 배치 전송 등에 대해서 살펴보겠습니다.카프카의 기초 용어와 개념용어 정리주키퍼(Zookeeper): 아파치 프로젝트 애플리케이션을 호칭하는 용어. 카프카의 메타데이터 관리 및 브로커의 헬스케어를 담당합니다.카프카(Kafka): 아파치 프로젝트 애플리케이션 이름을 의미합니다.카프카 클러스터(Kafka Cluster): 카프카가 설치된 여러 대의 브로커를 구성하면 카프카 클러스터라고 호칭합니다.브로커(Broker): 카프카 애플리케이션이 설치된 서버 또는 노드를 의미합니다.프로듀서(Producer): 카프카로 메시지를 보내는 역할을하는 클라이언트를 의미합니다.컨슈머(Con..

    카프카의 특징과 장점

    카프카의 특징높은 처리량http 기반으로 이벤트를 ㄹ전달하지만 응답시간은 한 자리수 밀리초로 처리할 만큼 빠르다.순서 보장이벤트 처리 순서가 보장되므로 엔터티 간의 유효성 검사나 동시 수정 같은 무수한 복잡성들이 제거되어 구조가 간결하다.적어도 한 번 전송 방식카프카는 멱등성을 유지한다.이로인해 프토듀서가 같은 데이터를 재손하도 데이터의 변화가 일어나지 않다.전송방식중에 ‘적어도 한 번’이라는 방식이 존재한다. 따라서 이벤트가 중복 발생할 수 있으나 누락 없는 전송이 가능하다.강력한 파티셔닝논리적으로 토픽을 여러 개로 나눌 수 있다.다른 파티션들과의 의존성 없이 처리가 가능하므로 수평적인 확장이 가능하다.자연스러운 백 프레셔 핸들링카프카는 Pull 방식으로 동작한다. Pull 방식의 장점은 자기 자신의 ..

    CHAPTER 13.실전 디자인 패턴

    이번 글에서는해당 챕터에서는 실제 디자인 패턴을 적용하는 방법에 대해서 학습합니다.패턴 카탈로그에 대해 학습한뒤 가장 훌륭한 패턴 카탈로그 저서인 GoF 디자인 패턴의 서술 방식을 살펴봅니다.디자인 패턴에서 사용되는 전문 용어를 살펴봅니다.디자인 패턴을 분류하는 방법들에 대해서 학습합니다.안티 패턴에 대해서 알아봅니다.패턴 카탈로그(GoF 템플릿) 살펴보기패턴 카탈로그는 아래와 같이 이루어져 있습니다.title(제목)Intent(용도)Motivation(동기)Applicablity(적용 대상)Strcture(구조)Participants(구성 요소)Collaboartions(협동)Consequences(결과)Implementation/SampleCode(구현 및 샘플 코드)Know Uses(사용 예)Rel..

    CHAPTER 12.복합 패턴

    복합 패턴이란?문제를 해결하기 위해 개발할 때는 효율적인 코드를 작성하기 위해 디자인 패턴을 고민하고 적용합니다.이때 하나의 디자인 패턴만을 사용하지 않고 여러 패턴을 복합적으로 사용하여 문제에 대한 해결을 시도 하는 것을 복합 패턴이라고 합니다. 복합 패턴 적용하기전략 패턴에서 사용했던 오리 예제를 다시 한 번 사용하여 예제를 진행하겠습니다.이전에는 오리 문제를 전략패턴만 사용해서 적용했지만 이번에는 새로운 문제를 예제 중간에 지속적으로 제안하고 문제 해결을 위한 디자인 패턴을 적용하도록 해보겠습니다.public interface Quackable { public void quack(); }오리가 소리를 내는 행동을 정의하는 Quackable 인터페이스입니다.public class MallardDuck..

    CHAPTER 11.프록시 패턴

    프록시 패턴이란?프록시 패턴의 특정 객체로의 접근을 제어하는 대리인을 제공하는 디자인패턴입니다.프록시 패턴을 사용하면 생성하기 힘든 객체 또는 보안이 중요한 객체와 같이 접근을 제어하는 대리인 객체를 만들 수 있습니다.프록시 패턴을 사용하게 되면 가상 프록시를 사용해서 생성하기 힘든 자원으로의 접근을 제어할 수 있으며 보호 프록시를 사용해서 접근 권한이 필요한 자원의 접근을 제어할 수 있습니다.프록시 패턴의 종류1. 원격 프록시원격 프록시는 원격 개체의 로컬 대변자 역할을 수행하는것을 의미합니다.로컬 대변자란 어떤 메소드를 호출하면 다른 원격 객체에게 그 메소드 호출을 전달해주는 객체를 로컬 대변자라고 합니다.클라이언트 객체는 원격 객체가 가지고 있는 메소드를 호출 하는것처럼 행동합니다. 하지만 실제로로..

    CHAPTER 10.상태 패턴

    상태 패턴 이해를 위한 간단한 문제 제안어릴때 문방구에서 위와 같은 뽑기 기계를 보신 경험이 있을것입니다.뽑기 기계를 만드는 CEO가 작은 컴퓨터 칩을 넣을건데 작은 칩에서 뽑기 기계가 동작할 수 있는 SW시스템을 구성하고 싶다고 의뢰가 들어왔습니다.CEO는 위의 그림과 같은 플로우로 SW를 만들어달라고 요청했습니다.상태를 확인해보면 아래 처럼 4가지의 상태로 구분할 수 있습니다.public class GumballMachine { final static int SOLD_OUT = 0; //알맹이 품절 final static int NO_QUARTER = 1; //동전미 보유 상태 final static int HAS_QUARTER = 2; //동전 보유 상태 final static int SOLD = ..

    CHAPTER 09.반복자 패턴과 컴포지트 패턴

    반복자 패턴 이해를 위한 간단한 문제 제안PancakeHouseMenu라는 식당과 DinerMenu라는 식당이 있습니다. 두 식당은 별개의 식당입니다.우연히 두 식당은 식당을 합치기로 했고 이 과정에서 서로 메뉴를 수정하기 싫어하는 신경전이 펼쳐지게 됩니다. 메뉴 수정이 다른 이유는 아래처럼 PancakeHouseMenu식당과 DinerMenu 식당의 구현 방법이 다르기 때문입니다.public class PancakeHouseMenu implements Menu { ArrayList menuItems; // DinerMenu와 달리 PancakeHouseMenu는 배열을 통해 메뉴를 구현 public PancakeHouseMenu() { menuItems = new ArrayList(); addItem(..

    CHAPTER 08.템플릿 메소드 패턴

    템플릿 메소드 패턴 이해를 위한 간단한 문제 제안우리는 개발을 하다보면 비슷한 메소드에 비슷한 로직을 작성할 때가 있습니다.특히 아래와 같은 상황은 개발자들에게 최적화에 대한 욕망과 갈증을 뿜뿜하게 됩니다.스타버즈 커피 만드는 법물을 끓인다.끓는 물에 커피를 우려낸다.커피를 컵에 따른다.설탕과 우유를 추가한다.스타버즈 홍차 만드는 법물을 끓인다.끓는 물에 찻잎를 우려낸다.홍차를 컵에 따른다.레몬을 추가한다. 두 개의 레시피를 살펴보면 재료만 다르지 행동은 비슷한다는걸 알 수 있습니다.따라서 위의 레시피를 문맥 그대로 코드로 녹여낼 경우 반복적인 코드가 탄생할 것입니다.템플릿 메소드 패턴은 예시처럼 비슷한 로직을 템플릿화 하여 코드의 퀄리티를 높여주는 디자인 패턴입니다. 템플릿 메소드 패턴을 적용해보기위 ..

    CHAPTER 07.어댑터 패턴과 퍼사드 패턴

    어댑터 패턴 이해를 위한 간단한 문제 제안해외 직구를 통해 전자 제품을 구매했다고 가정하겠습니다.각 나라별로 사용되는 어뎁터 소켓이 다르기 때문에 변환기가 필요할 것입니다.일본은 110V를 사용하고 우리나라는 220V를 사용하는것이 예시가 될 수 있습니다.객체지향 코드에서도 위와 같은 비슷한 문제가 발생할 때가 있습니다.객체 인터페이스가 달라서 사용하지 못하는 경우가 예시가 될 수 있습니다.오리 인터페이스에 비슷한 칠면조 객체를 동작하도록 하고 싶은 문제 상황이라 가정해보겠습니다.이럴 경우 어댑터 패턴을 사용해 어떻게 해결하는지 살펴보겠습니다.어댑터 패턴을 사용하여 문제 해결해보기public interface Duck { public void quack(); public void fly(); }먼저 오리..

    CHAPTER 06.커멘드 패턴

    커멘드 패턴 이해를 위한 간단한 문제 제안필자는 고객의 요구사항에 의해서 만능 IOT 리모컨을 만들려고 합니다.리모컨에는 아래와 같은 방식으로 만들려고 해요!그림을 보면 7개의 기능들이 각 슬롯마다 매핑되어야 하는것을 알 수 있습니다.문제는 각 기능들의 공통된 인터페이스가 없다라는 상황입니다.예를 들어 ON의 첫 번째 버튼은 TV의 관련 기능이고 두 번째는 선풍기 전원이라고 가정하겠습니다.TV의 기능 ON에는 TV가 켜진순간 볼륨도 켜져야하고 채널의 최초 번호수도 결정되어야 합니다.선풍기는 ON 되는 순간 방향의 세기가 결정되어야 합니다.이처럼 공통 인터페이스가 없는 경우 위의 사진처럼 여러 클래스가 난잡해지는 문제가 발생합니다.하물며 고객은 나중에 다른 제품이 추가될 수 있게 확장성 있는 개발을 원합니..

    CHAPTER 05.싱글톤 패턴

    1.싱글톤 패턴이란싱글톤 패턴은 클래스 인스턴스를 하나만 만들고, 하나만 만든 인스턴스로의 전역 접근을 제공하는 패턴입니다.싱글톤 패턴 구현public class Singleton { private static Singleton uniqueInstance; // other useful instance variables here private Singleton() {} public static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } // other useful methods here }코드를 살펴보겠습니다.먼저 Singleton 클래스의 ..

    CHAPTER 04.팩토리 패턴

    팩토리 패턴 이해를 위한 간단한 문제 제안피자를 만드는 아래와 같은 코드가 있다고 가정해보겠습니다.public class PizzaStore { public Pizza orderPizza(String type) { Pizza pizza; if (type.equals("cheese")) { pizza = new CheesePizza(); } else if (type.equals("pepperoni")) { pizza = new PepperoniPizza(); } else if (type.equals("clam")) { pizza = new ClamPizza(); } else if (type.equals("veggie")) { pizza = new VeggiePizza(); } pizza.prepare();..

    CHAPTER 03.데코레이터 패턴

    데코레이터 패턴 이해를 위한 간단한 문제 제안 2022년 스타버즈 커피는 커피 브랜드를 대표하는 브랜드로 성장해있습니다. 1971년 스타버즈는 지금처럼 회사가 커질줄 몰랐고 메뉴도 지금처럼 많지 않았습니다. 사업을 시작할 무렵에는 아래와 같은 설계 구조로 이뤄져 있습니다. Beverage는 음료를 나타내는 추상클래스입니다. 매장에서 판매되는 모든 음료는 이 클래스의 서브클래스가 됩니다. Beverage의 cost()메소드는 추상 메소드입니다. 서브클레스에서는 이 메소드를 구현해야합니다. Beverage의 description이라는 인스턴스변수는 각 서브클래스에서 설정되며 커피에 대한 설명 정보가 문자열로 저장됩니다. description이라는 변수 정보는 getDescription() 메소드를 통해 정보..

    CHAPTER 02.옵저버 패턴

    옵저버 패턴 이해를 위한 간단한 문제 제안 독자에게 기상 조건인 온도, 습도, 기압 3가지의 변화를 감지하는 시스템을 만들라는 요구사항이 들어옵니다. 위의 3가지 항목들은 실시간으로 갱신되야 합니다. 디스플레이를 손쉽게 추가할 수 있어야 합니다.이 기기는 다른 추가사항 또한 바로 넣을 수 있도록 확장 가능해야 합니다. 요구 사항을 좀 더 자세히 설명해보겠습니다. 저희들이 구현해야하는 것은 WeatherData 객체입니다. 가상 스테이션은 습도, 온도, 기압 센서로부터 데이터를 받습니다. 이때 변경되는 데이터는 실시간으로 받기 때문에 WeatherData객체는 실시간으로 데이터를 변경해줘야합니다. WeatherData객체는 가상 스테이션과 통신해서 기상 데이터를 가져옵니다. WeatherData객체는 디스..

    CHAPTER 01.디자인 패턴 소개와 전략 패턴

    전략 패턴 이해를 위한 간단한 문제 제안 전략패턴을 이해하기 위해 간단한 문제를 먼저 제시해보도록 하겟습니다. “SIMUDuck”이라는 오리 게임을 만들기 위해 오리라는 객체를 정의하고 오리를 상속받아 도메인에 맞는 오리를 생성하는 설계 구조입니다. 이런 설계 상황에서 기획자의 요구에 의해 Duck이라는 객체에 Fly()라는 메소드를 추가 받아야 하는 요구사항이 들어온것입니다. 개발자는 상속을 사용하여 구현한 상태에서 모든 오리는 날수 있다고 생각하여 Fly()라는 메소드를 추가하게 됩니다. 근데 이런 상황에서 만약 모형 오리라는 클래스를 추가하게 되면 날지 못하는 오리들도 날게 되는 기이한? 오류가 발생하게 됩니다. 이처럼 전략패턴은 상속에 대한 부정적인 관점으로 인터페이스 기반 설계와 구현을 지향합니..

    CHATER 00.이 책을 읽는 방법

    이 책을 읽는 이유와 포스팅 하는 이유 이 책은 디자인 패턴에 대해 설명하는 책들입니다. 개인적으로 많은 멘토분들과 동료들이 이 책을 읽으라고 추천을 해주셨습니다. 이 카테고리의 포스팅된 글들은 제가 까먹고 기억하기 위해서 작성하는 목적도 가지고 있지만 구글링을 통해 들어와서 정보를 빠르게 필요로 하신 분들을 위해서이기도 합니다. 이 책의 저자는 에릭 프리먼과 엘리자베스 롭슨입니다. 에릭 프리먼은 월트 디즈니 온라인 CTO를 역임하고 현재는 WickedlySmart에서 책과 동영상 콘텐츠를 창작하는 일을 하는 프로입니다. 또한 헤드 퍼스트 시리즈를 만든 사람 중 한명입니다. 엘리자베스 롭슨은 소프트웨어 엔지니어 저자로서 WickedlySmart의 공동창업자로 예일대학교에서부터 기술적인 분야에 열정을 품고..

    [#3-13]동적계획법-문제: 두니발 박사의 탈옥(문제 ID: NUMB3RS)

    문제출처 algospot.com :: POLY 폴리오미노 문제 정보 문제 정사각형들의 변들을 서로 완전하게 붙여 만든 도형들을 폴리오미노(Polyomino)라고 부릅니다. n개의 정사각형으로 구성된 폴리오미노들을 만들려고하는데, 이 중 세로 algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-12]동적계획법-문제: 폴리오미노(문제 ID: POLY)

    문제출처 algospot.com :: POLY 폴리오미노 문제 정보 문제 정사각형들의 변들을 서로 완전하게 붙여 만든 도형들을 폴리오미노(Polyomino)라고 부릅니다. n개의 정사각형으로 구성된 폴리오미노들을 만들려고하는데, 이 중 세로 algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-11]동적계획법-문제: 비대칭 타일링(문제 ID: ASYMTILING)

    벽돌의 사이즈, 가로로 보기.... 문제출처 https://algospot.com/judge/problem/read/ASYMTILING algospot.com :: ASYMTILING 비대칭 타일링 문제 정보 문제 그림과 같이 2 * n 크기의 직사각형을 2 * 1 크기의 타일로 채우려고 합니다. 타일들은 서로 겹쳐서는 안 되고, 90도로 회전해서 쓸 수 있습니다. 단 이 타일링 방법은 algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-10]동적계획법-예제: 장마가 찾아왔다(문제 ID: SNAIL)

    문제출처 algospot.com :: SNAIL 달팽이 문제 정보 문제 깊이가 n 미터인 우물의 맨 밑바닥에 달팽이가 있습니다. 이 달팽이는 우물의 맨 위까지 기어올라가고 싶어하는데, 달팽이의 움직임은 그 날의 날씨에 좌우됩니다. 만약 � algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-9]동적계획법-예제: 삼각형 위의 최대 경로 개수 세기(문제 ID: TRIPATHCNT)

    문제출처 algospot.com :: TRIPATHCNT 삼각형 위의 최대 경로 수 세기 문제 정보 문제 9 5 7 1 3 2 3 5 5 6 위 형태와 같이 삼각형 모양으로 배치된 자연수들이 있습니다. 맨 위의 숫자에서 시작해, 한 번에 한 칸씩 아래로 내려가 맨 아래 � algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-8]동적계획법-예제: 타일링 방법의 수 세기(문제 ID: TILING2)

    문제출처 algospot.com :: TILING2 타일링 문제 정보 문제 2xn 크기의 사각형을 2x1 크기의 사각형으로 빈틈없이 채우는 경우의 수를 구하는 프로그램을 작성하세요. 예를 들어 n=5라고 하면 다음 그림과 같이 여덟 가지의 방법이 있 algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-7]동적계획법-문제: Quantization(문제 ID: QUANTIZE)

    진짜 말도 안 되는 문제였다. 장담하는데 이거 일주일 동안 풀라고 시간을 줘도 못 풀었을 거 같다. 문제에 대해서 어떻게 하면 최적의 방식을 찾을지 규칙은 찾았으나 이것을 수식을 세워서 점화법을 세우는 단계까지는 못갔다. 꼭 다시 풀어봐야 하는 문제. 전체적인 이해는 했으나 코드가 흘러가는 재귀적 구조가 완벽히 들어오지 않는다. 하루 동안 고민하다가 스스로 화가 나서 포기하고 다음날 책을 다시 보니까 이해가 갔다. 역시 멘탈이.... 안 풀리거나 막히면 그냥 바람을 씌거나 산책을 하든가 잠시 쉬는 게 좋은 방법이라는 걸 깨달았다. 그냥 붙잡고 쳐다본다고 이해가 가지는 않는다. 문제출처 algospot.com :: QUANTIZE Quantization 문제 정보 문제 Quantization (양자화) 과..

    [#3-6]동적계획법-문제: 원주율 외우기(문제 ID: PI)

    문제출처 algospot.com :: PI 원주율 외우기 문제 정보 문제 (주의: 이 문제는 TopCoder 의 번역 문제입니다.) 가끔 TV 에 보면 원주율을 몇만 자리까지 줄줄 외우는 신동들이 등장하곤 합니다. 이들이 이 수를 외우기 위해 사용�� algospot.com 문제 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-5]동적계획법-문제: 합친 LIS(문제 ID: JLIS)

    문제출처 algospot.com :: JLIS 합친 LIS 문제 정보 문제 어떤 수열에서 0개 이상의 숫자를 지운 결과를 원 수열의 부분 수열이라고 부릅니다. 예를 들어 '4 7 6'은 '4 3 7 6 9'의 부분 수열입니다. 중복된 숫자가 없고 오름 차순으로 algospot.com 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com

    [#3-4]동적계획법-예제: 최대 증가 부분 수열(문제 ID: LIS)

    문체출처 algospot.com :: LIS Longest Increasing Sequence 문제 정보 문제 어떤 정수 수열에서 0개 이상의 숫자를 지우면 이 수열의 부분 수열 (subsequence) 를 얻을 수 있다. 예를 들어 10 7 4 9 의 부분 수열에는 7 4 9, 10 4, 10 9 등이 있다. algospot.com 코드 NamHyeop/AlgorithmProblem 백준알고리즘,프로그래머스,알고스팟 등의 문제풀이 사이트에관한 문제들의 문제풀이 코드입니다. - NamHyeop/AlgorithmProblem github.com