본문 바로가기

전체 글

[Binray Search][백준 3020] 개똥벌레 https://www.acmicpc.net/problem/3020  개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다.아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림)  이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다.위의 그림에서 4번째 구간으로 개똥벌레가 날아간다면 파괴해야하는 장애물의 수는 총 여덟개이다. (4번째 구간은 길이가 3인 석순과 길이가 4인 석순의 중간지점을 말한다) 하지만, 첫 번째 구간이나 다섯 번째 구간으로 날아간다면 개똥.. 더보기
[DP 0-1 knapsack][백준 12865] 평범한 배낭 이 문제는 아주 평범한 배낭에 관한 문제이다.한 달 후면 국가의 부름을 받게 되는 준서는 여행을 가려고 한다. 세상과의 단절을 슬퍼하며 최대한 즐기기 위한 여행이기 때문에, 가지고 다닐 배낭 또한 최대한 가치 있게 싸려고 한다.준서가 여행에 필요하다고 생각하는 N개의 물건이 있다. 각 물건은 무게 W와 가치 V를 가지는데, 해당 물건을 배낭에 넣어서 가면 준서가 V만큼 즐길 수 있다. 아직 행군을 해본 적이 없는 준서는 최대 K만큼의 무게만을 넣을 수 있는 배낭만 들고 다닐 수 있다. 준서가 최대한 즐거운 여행을 하기 위해 배낭에 넣을 수 있는 물건들의 가치의 최댓값을 알려주자.입력첫 줄에 물품의 수 N(1 ≤ N ≤ 100)과 준서가 버틸 수 있는 무게 K(1 ≤ K ≤ 100,000)가 주어진다. 두.. 더보기
[우선순위 큐][백준 1655] 가운데를 말해요 https://www.acmicpc.net/problem/1655  문제백준이는 동생에게 "가운데를 말해요" 게임을 가르쳐주고 있다. 백준이가 정수를 하나씩 외칠때마다 동생은 지금까지 백준이가 말한 수 중에서 중간값을 말해야 한다. 만약, 그동안 백준이가 외친 수의 개수가 짝수개라면 중간에 있는 두 수 중에서 작은 수를 말해야 한다.예를 들어 백준이가 동생에게 1, 5, 2, 10, -99, 7, 5를 순서대로 외쳤다고 하면, 동생은 1, 1, 2, 2, 2, 2, 5를 차례대로 말해야 한다. 백준이가 외치는 수가 주어졌을 때, 동생이 말해야 하는 수를 구하는 프로그램을 작성하시오. 핵심우선순위 큐는 항상 root를 가장 높은 우선순위를 유지하도록 하는 특징이 있다. 풀이입력 값이 주어지는 과정 중에 가.. 더보기
redisson-spring-boot-starter란 목적: Spring Boot 애플리케이션에서 Redisson을 쉽게 설정하고 사용할 수 있도록 도와주는 스타터 라이브러리입니다.설명:redisson-spring-boot-starter는 Spring Boot와 Redisson의 기본적인 통합을 제공합니다.이 스타터를 사용하면, Spring Boot의 자동 설정 기능을 통해 Redisson 클라이언트가 쉽게 설정됩니다. 즉, RedissonClient를 생성하고 구성하는 작업이 간편해집니다.Spring Data Redis API와의 통합이 아닌, Redisson의 기능(예: 분산 잠금, 분산 객체, 메시지 큐 등)을 Spring Boot에서 바로 사용하고자 할 때 유용합니다.설정 파일에서 간단한 설정을 통해 Redisson 클라이언트를 사용할 수 있습니다... 더보기
redisTemplate이란 RedisTemplate은 Spring Framework에서 제공하는 클래스 중 하나로, Redis 데이터베이스와 상호작용하기 위해 사용됩니다.Redis는 메모리 기반의 고성능 키-값 데이터 저장소로, 캐싱, 세션 관리, 메시지 큐잉 등에 자주 사용됩니다.RedisTemplate은 이러한 Redis 기능들을 자바 코드에서 쉽게 사용할 수 있도록 도와주는 도구입니다.RedisTemplate의 주요 특징 및 기능다양한 데이터 타입 지원:Redis는 문자열, 해시, 리스트, 셋, 정렬된 셋 등 다양한 데이터 타입을 지원합니다.RedisTemplate은 이러한 모든 데이터 타입에 대해 접근할 수 있는 메서드를 제공합니다. 예를 들어, opsForValue()는 문자열 작업을 위한 메서드를, opsForHash(.. 더보기
[백준 9251][DP] LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 출처: https://www.acmicpc.net/problem/9251    점화식 dp[i][j]: 수열1 i까지, 그리고 수열 j 까지 최장 공통 부분 수열 길이   수열 ACAYKP, CAPCAK에 대해 점화식을 2차원 배열로 표현하면 다음과 같다. 원소 하나에 대해 3가지 방향으로부터 영향을 받아 값이 정해진다.  특징LCS 기본 문제 점화식 루프를 돌때 배열의 범위를 벗어나지 않게 조심해야 한다. 따라서 i 또는 j가 0인 경우는 따로 로직으로 처리해줄 수.. 더보기
[백준 4796][분류 수학] 캠핑 문제등산가 김강산은 가족들과 함께 캠핑을 떠났다. 하지만, 캠핑장에는 다음과 같은 경고문이 쓰여 있었다.캠핑장은 연속하는 20일 중 10일동안만 사용할 수 있습니다.강산이는 이제 막 28일 휴가를 시작했다. 이번 휴가 기간 동안 강산이는 캠핑장을 며칠동안 사용할 수 있을까?강산이는 조금 더 일반화해서 문제를 풀려고 한다. 캠핑장을 연속하는 P일 중, L일동안만 사용할 수 있다. 강산이는 이제 막 V일짜리 휴가를 시작했다. 강산이가 캠핑장을 최대 며칠동안 사용할 수 있을까? (1 https://www.acmicpc.net/problem/4796  풀이V 휴가 중 최대한 많이 캠핑장을 예약하려고 한다. 연속 P일 이내에서는 최대 L일만 예약이 가능하다. 그런데 연속 P일 이후에 남은 일자에 대해서는 2가지 .. 더보기
socket, socket programming 관련 개념 TCP 프로토콜 표준 스펙에서  Socket 의미인터넷 상에 존재하는 port를 유니크하게 식별하기 위한 주소ip, port 쌍으로 socket을 식별port는 process와 연결된 data path 혹은 data channel하나의 process에 둘 이상의 port가 존재할 수 있다. (멀티스레드)한 쌍의 socket은 connection을 유니크하게 식별하나의 socket은 동시에 여러 connection에서 사용 가능→ 서버에서 port 범위보다 많은 connection이 가능한 이유connection프로세스 간의 안정적이고 논리적인 통신 경로각 connection은 유니크함connection을 열고, 데이터를 주고 받고, connection을 닫는다. → Connection-OrientedTC.. 더보기