일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 웹사이트성능
- 디자인패턴
- nginx설치
- php
- 카프카
- Push
- 푸시 번역
- gcm 푸시 번역
- notification
- git
- 푸시
- 웹사이트 성능
- nginx설정
- GCM
- 성능
- Design Pattern
- ddd
- APNS
- 웹사이트최적화기법
- kafka
- JPA
- Java
- graphql
- 자바스크립트
- 알고리즘
- 카프카 트랜잭션
- nginx
- GCM 번역
- 페이스북 번역
- Today
- Total
목록Computer Science/Algorithm & Etcs... (7)
간단한 개발관련 내용
📌 문자열 압축 & 해제 개요개념 설명압축연속된 문자를 문자+개수 형식으로 표현 (예: "aaabbc" → "a3b2c1")해제(복원)압축된 문자열을 다시 원래 문자열로 복원 (예: "a3b2c1" → "aaabbc")📘 1. 문자열 압축 개념 정리✅ 압축 규칙연속된 문자를 찾아 개수를 셈[문자][개수] 형태로 저장예: "aabcccccaaa" → "a2b1c5a3"✅ 압축 예시원본 압축 결과"aaaabb""a4b2""abcd""a1b1c1d1""aabcc""a2b1c2"📗 2. 문자열 해제 개념 정리✅ 해제 규칙압축된 문자열에서 문자 뒤 숫자만큼 반복[문자][개수] → 문자 × 개수예: "a3b2c1" → "aaabbc"✅ 해제 예시압축 해제 결과"a4b2""aaaabb""a1b1c1d1""abc..
✅ 팰린드롬(Palindrome) 정리1. 정의팰린드롬이란 앞에서 읽으나 뒤에서 읽으나 같은 문자열을 말한다.문자, 숫자, 문장 모두 해당할 수 있으며, 보통 공백·기호·대소문자를 무시한다.예시:"madam" → ✅"racecar" → ✅"A man, a plan, a canal, Panama" → ✅ (전처리 후)"hello" → ❌2. 조건팰린드롬이 되기 위한 조건:좌우가 대칭이어야 함대소문자 구분 없이 비교특수문자, 공백 무시 가능3. 주요 활용 사례문자열 유효성 검사자연어 처리 / 텍스트 마이닝회문 관련 알고리즘 (최장 회문 부분 문자열 등)인터뷰/프로그래밍 대회4. 구현✅ Java: 투 포인터 방식public boolean isPalindrome(String str) { str = str...
1. 애너그램이란?정의:두 단어(또는 문장)가 같은 알파벳을 같은 개수로 가지고 순서만 다르게 배치된 경우를 말함(예: "listen" ↔ "silent", "Dormitory" ↔ "Dirty room")2. 애너그램 판별 기본 원칙알파벳만 비교한다 (공백, 숫자, 특수문자 등은 모두 무시)대소문자 구분 없음 (모두 소문자 혹은 대문자로 변환 후 비교)각 문자의 개수가 동일해야 함3. 자바에서 입력 전처리 방법알파벳 이외 문자 제거:s = s.replaceAll("[^a-zA-Z]", "");대소문자 통일:s = s.toLowerCase();모든 공백 제거:위의 정규표현식에서 자동 처리됨알파벳만으로 이루어져 있는지 검증 (필요할 경우):s.matches("[a-zA-Z]+")4. 애너그램 구현 대표 방..

다익스트라 알고리즘 (Dijkstra's Algorithm)다익스트라 알고리즘은 가중치가 있는 그래프에서 한 정점에서 다른 모든 정점까지의 최단 경로를 찾는 알고리즘입니다. 이 알고리즘은 그리디(greedy) 방식을 기반으로 하며, 네덜란드의 컴퓨터 과학자 에츠허르 다익스트라(Edsger W. Dijkstra)에 의해 제안되었습니다.다익스트라 알고리즘의 특징가중치가 음수가 아닌 그래프에만 적용 가능:가중치가 음수인 경우, 이 알고리즘은 최적의 결과를 보장할 수 없습니다.단일 시작점에서 다른 모든 정점까지의 최단 경로를 계산:한 정점에서 다른 모든 정점까지의 최단 경로를 계산.시작 정점에서 특정 정점까지의 최단 경로를 계산할 수 있습니다.시간 복잡도:시간 복잡도: O((V+E)logV) (우선순위 큐 사용..

동적 프로그래밍 (Dynamic Programming, DP)동적 프로그래밍은 복잡한 문제를 작은 하위 문제로 나누고, 각 하위 문제를 한 번만 풀어 그 결과를 재사용함으로써 전체 문제를 효율적으로 해결하는 알고리즘 기법입니다. 이는 재귀적 접근법(분할정복)과 메모이제이션(결과 저장)을 결합한 방식으로, 중복 계산을 줄이는 것이 핵심입니다.동적 프로그래밍의 특징최적 부분 구조 (Optimal Substructure): 문제를 더 작은 하위 문제로 나눌 수 있으며, 이 하위 문제들의 해결 방법을 조합해 전체 문제를 해결할 수 있어야 합니다.중복되는 하위 문제 (Overlapping Subproblems): 동일한 하위 문제가 여러 번 반복되어 계산될 경우, 이전 계산 결과를 저장해 재사용할 수 있습니다.동..
알고리즘은 다양한 문제를 해결하기 위해 설계된 방법론으로, 문제의 유형과 성격에 따라 적합한 알고리즘을 선택해야 합니다. 아래는 그리디 알고리즘을 중심으로 주요 알고리즘을 문제 해결 방식과 특성에 따라 분류하고 설명한 내용입니다.1. 그리디 알고리즘 (Greedy Algorithm)특징매 단계에서 현재 상황에서 가장 최선의 선택을 합니다.문제를 전역적으로 최적화할 수 있는지 판단하기 위해 지역적으로 최적화된 선택을 기반으로 합니다.일반적으로 탐욕스러운 선택 속성(Greedy Choice Property)과 최적 부분 구조(Optimal Substructure)를 만족하는 문제에서 사용됩니다.적용 사례활동 선택 문제(Activity Selection Problem)회의실 배정 문제: 가장 빨리 끝나는 활동..