728x90
반응형
SMALL

Java 5

[Codility] 그룹화 및 정렬 후 순서 출력하기 (+자릿수 동적 처리)

구현(Simulation) 유형 문제를 복기합니다.조건을 그대로 코드로 옮기는 구현 문제이지만, 원본 순서 보존과 자릿수 자동 조정 두 가지를 동시에 챙겨야 했던 문제입니다.문제 유형: 구현(Simulation) — 그룹화 + 정렬 + 포맷 처리문제 요약N개의 사진 정보가 주어진다. 각 줄은 파일명, 도시명, 촬영시간 형식이다.입력 순서를 유지하면서, 각 사진 이름을 도시명 + 도시 내 시간순 번호 + 확장자 형식으로 변환하라.단, 번호 자릿수는 해당 도시의 사진 수에 맞춰 동적으로 맞춘다.입력 예시:photo.jpg, CityA, 2013-09-05 14:08:15friend.png, CityB, 2015-06-20 15:13:22sunset.jpg, CityA, 2013-09-05 14:07:13la..

[Codility] 자릿수 합이 N인 가장 작은 수 (#Greedy)

[Codility] 자릿수 합이 N인 가장 작은 수 (#Greedy) 그리디 알고리즘 문제를 복기합니다.처음엔 단순해 보였지만, 히든 테스트케이스에서 꼼꼼하게 생각하게끔 만드는 문제입니다. 문제 요약양의 정수 N이 주어졌을 때, 각 자릿수의 합이 N이 되는 가장 작은 자연수를 구하시오.예시:N = 9 → 9N = 10 → 19 (1+9=10, 최솟값)N = 18 → 99 (9+9=18)N = 20 → 299 (2+9+9=20)풀이 접근: Greedy핵심 아이디어는 두 가지입니다.자릿수 합을 빠르게 채우려면 9를 최대한 써야 한다.9보다 작은 숫자를 여러 자리에 쪼개면 자리수가 늘어나서 수가 커집니다.수를 최소로 만들려면 나머지를 가장 앞자리에 배치해야 한다.예) N=20: 9,9,2 순서면 992, 2..

[JVM] Heap 구조 뜯어보기: new 한 줄이 메모리에서 벌어지는 일

이전 글에서 부하테스트를 주제로 포스팅하면서 JVM Heap 구조를 간략히 언급했는데,이번에는 JVM 자체를 한 번 깊게 다뤄보고자 합니다.2026.03.16 - [IT/java|Spring] - [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기 [부하테스트] JMeter Ramp-up부터 JVM Heap 최적화까지: 서버 성능 개선기배경여러 서비스를 운영하면서 공통 질문이 생겼습니다. "POD 한 대가 실제로 얼마나 버틸 수 있는가?"부하테스트를 준비하던 중, 검증계·운영계 모두 JVM Heap이 Pod 메모리와 맞지 않게 설정되어snapcode.tistory.com 알고 있다고 생각하면서도, 막상 설명하려면 막히는 내용 이기도 합니다.이미 알고 계신 분께는 복..

IT/java|Spring 2026.03.17

[MCP] Gemini + LangChain4j 활용하여 검색 기능 개선

[ MCP Inspertor Search Result ] 상황기존 검색은 정해진 SQL로 단순 키워드만 조회했습니다. 이번에 Gemini AI(무료 플랜) + LangChain4j를 결합하여 자연어를 JSON으로 변환한 후, 동적 SQL을 안전하게 생성하는 시스템을 구현했습니다. 핵심 개선사항기존: 고정 SQL, WHERE 조건 사전 정의개선: 자연어 → LLM 분석 → JSON 추출 → 동적 SQL (유연성 ↑)아키텍처 흐름사용자 입력 (자연어) ↓[Gemini 2.0 Flash] 검색 조건 분석 ↓JSON 파싱 (필터 조건 구조화) ↓[PreparedStatement] 안전한 SQL 조립 ↓데이터베이스 실행 → 결과 반환실제 예시입력: "금융 회사의 5년 이상 경력 개발자 공고..

IT/AI 2026.02.17

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기

[Spring Security] 자동화된 봇 공격 분석 및 방어: 로그 노이즈 90% 제거하기 배경: 아직은 사용자가 나밖에 없는데.. 갑자기 증가한 로그 (귀신이 왔다갔나...)프로덕션 서버에 배포한 Career Lens 애플리케이션(example.com)의 Docker 컨테이너 로그를 확인했을 때, 이상한 패턴의 에러 메시지들이 대량으로 쌓여 있었습니다.2026-01-27T02:06:08.623+09:00 WARN --- Request method 'POST' is not supported2026-01-27T02:44:09.104+09:00 INFO Error parsing HTTP request headerjava.lang.IllegalArgumentException: Invalid char..

IT/java|Spring 2026.01.28
728x90
반응형
LIST