본문 바로가기
반응형

분류 전체보기58

Knapsack - 제한 용량에 최대 가치 채우기 Knapsack 문제 일반화10kg 배낭에 넣을 수 있는 물건이 4개가 있고 각 물건의 무게와 가치는 다음과 같다.무게 : 5, 4, 6, 3가치 : 10, 40, 30, 50여기서 각 물건은 넣거나 넣지 않을 수 있다. 최대 가치를 구해야 하므로 가장 작은 문제 부터 최대 가치를 만들어서 10kg 문제까지 해결해보자여기서 가장 작은 문제는 1kg 배낭에 채울 수 있는 최대 가치라고 정의하자. 1. (5, 10) 의 물건1 ~ 4kg 배낭엔 채울 수 없으므로 가치는 05kg 배낭으로 가치는 10 2. (5,10) (4,40) 의 물건1 ~ 3kg 배낭엔 채울 수 없으므로 가치는 04 ~ 8kg 배낭엔 (4, 40)을 채울 수 있으므로 가치는 409 ~ 10kg 배낭엔 (4, 40), (5, 10) 추가할.. 2024. 8. 23.
스위프 5기 FADE 프로젝트 돌아보기 후기 들어가며지난 6월 부터 8월 10일까지 스위그 5기 백엔드 개발자로 참여해 FADE 프로젝트를 출시했다.주제 선정 기간 "매일 매일 패션왕을 뽑는 서비스가 있으면 어떨까?" 라는 내 의견으로부터 시작됐고 추가적인 피처를 구상하며 발전된 서비스이다. 다른 주제에 대한 의견도 많았는데, 심지어는 나조차 내 주제를 선택하는게 유치해 다른 주제를 선택했는데 출시 후 오늘 기준 유저가 50명까지 늘어났다니 이렇게 뿌듯하지 않을 수 없었다. 제일 마지막에 팀에 합류했고 부족한 점도 많았지만 6주 동안 함께 고생해주신 팀원 분들께 감사드립니다. FADE: 투표로 만들어가는 패션 트렌드당신의 패션 감각이 트렌드를 만듭니다! 매일매일 새로운 스타일에 투표하고, 가장 사랑받은 룩이 오늘의 페이피(FA:P)로 빛나요. 투표.. 2024. 8. 12.
Sse 알림 기능 적용해보기 (Spring Boot) 신발 입찰 거래 프로젝트를 진행하면서 알림 기능을 구현해야 했다.기능을 적용해야 할 부분은 다음과 같다. 1. 즉시 판매의 경우 구매 입찰을 등록한 구매자에게 결제 알림이 전송되어야 한다. 구매자 1에게 알림을 전송하는 방법은 여러가지가 있는데 Sse를 사용해보기로 했다 위키백과에 SSE에 대한 설명이 나와있다.SSE ( 서버 전송 이벤트 )는 클라이언트가 HTTP 연결을 통해 서버로부터 자동 업데이트를 수신할 수 있도록 하는 서버 푸시 기술이며, 초기 클라이언트 연결이 설정된 후 서버가 클라이언트를 향한 데이터 전송을 시작하는 방법을 설명합니다. 이는 일반적으로 브라우저 클라이언트에 메시지 업데이트 또는 지속적인 데이터 스트림을 보내는 데 사용되며 클라이언트가 이벤트 스트림을 수신하기 위해 특정 URL.. 2024. 6. 14.
Overload, Override overload란 여러 메서드가 같은 이름을 갖고 있으나 매개변수, 자료형이 서로 다른 개념입니다. 오버라이딩을 할 때 개발자의 실수를 방지하기 위해 메서드 위에 @Override 를 관례적으로 적습니다. override란 부모 클래스의 메서드명, 기능을 물려받아 재정의 할때 사용되는 개념입니다. 예제 코드 class Cal{ public int sum(int v1, int v2){ return v1+v2; } // Overloading public int sum(int v1, int v2, int v3){ return v1+v2+v3; } } class Cal3 extends Cal{ public int minus(int v1, int v2){ return v1-v2; } // Overriding pu.. 2024. 3. 5.
Call by Reference 란? Call by Reference란 참조 값으로 함수를 호출하는 개념입니다. 함수에서 함수 외부 메모리 공간을 참조할 때 사용하며, 함수 선언시 매개변수에 &를 사용해 변수의 위치를 받도록 하고 함수 내부에서는 위치를 준 변수를 일반 변수처럼 사용합니다. 다른 개념으로는 Call by Value(값에 의한 호출)이 있습니다. -> 외부 변수의 값을 복사해서 사용하기 때문에 안전하지만, 메모리 사용량이 늘어남 Call By Reference를 사용하면 함수 내부에서 외부 변수의 값을 직접 참조하기 때문에 빠르긴 하지만 외부 변수의 값의 변경이 일어납니다. 대표적으로 swap 로직이 있습니다. #include void swap(int &num1, int &num2) { int temp = num1; num1 .. 2024. 3. 5.
Redis Cache 적용해서 Tps를 높여보기 ( 이전 글과 이어지는 포스트입니다. ) 구매 서비스에서 재고 동시성 이슈 해결해보기(2) - Redisson '분산락'은 다중 서버 + 분산 DB 환경에서 동시성을 제어하기 위해 사용하는 Lock 기법입니다. 대표적으로 Mysql User Lock, Redis Lettuce, Redis Redisson이 있습니다. 반드시 Redisson을 사용할 필요는 없지만, devsting.tistory.com 이전 시간까지 멀티 쓰레드, 멀티 서버 환경을 고려하여 동시성 문제 해결하기 위해 JPA의 @Lock을 사용해서 해결했고, Redisson 또한 적용해봤습니다. 그럼 이제 수행해야할 과제는 무엇인가.. 당연 서버의 성능, 내가 만든 API의 성능을 측정하는 것이였습니다. 저는 다양한 방법 중 Redis Ca.. 2024. 3. 5.
반응형