일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인패턴
- graphql
- GCM
- Design Pattern
- kafka
- nginx설정
- nginx설치
- Push
- 카프카 트랜잭션
- 푸시
- php
- notification
- Java
- 성능
- JPA
- 웹사이트성능
- GCM 번역
- 페이스북 번역
- ddd
- APNS
- 자바스크립트
- 푸시 번역
- gcm 푸시 번역
- 웹사이트 성능
- git
- 웹사이트최적화기법
- 카프카
- 알고리즘
- nginx
- Today
- Total
목록Computer Science (47)
간단한 개발관련 내용
📌 문자열 압축 & 해제 개요개념 설명압축연속된 문자를 문자+개수 형식으로 표현 (예: "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. 애너그램 구현 대표 방..
Java는 처음부터 UTF-16을 사용했을까?Java는 1.0부터 UTF-16을 내부 문자 인코딩 방식으로 사용즉, Java의 char 타입과 String 클래스는 초기부터 UTF-16을 기반으로 동작하지만, Java의 문자 처리 방식은 유니코드(Unicode) 표준이 발전하면서 약간의 변화가 있었음1. Java 1.0 (1996) - Unicode 1.1 기반🔹 Java 1.0 초기 문자 시스템Java 1.0에서는 char 타입이 16비트(2바이트) 정수형 (unsigned short) 로 설계됨.당시 유니코드(Unicode 1.1)는 U+0000 ~ U+FFFF (BMP, 16비트)만 사용했기 때문에 2바이트만으로 모든 문자를 표현할 수 있었음.따라서 Java 1.0에서는 "한 개의 char = 한..

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

동적 프로그래밍 (Dynamic Programming, DP)동적 프로그래밍은 복잡한 문제를 작은 하위 문제로 나누고, 각 하위 문제를 한 번만 풀어 그 결과를 재사용함으로써 전체 문제를 효율적으로 해결하는 알고리즘 기법입니다. 이는 재귀적 접근법(분할정복)과 메모이제이션(결과 저장)을 결합한 방식으로, 중복 계산을 줄이는 것이 핵심입니다.동적 프로그래밍의 특징최적 부분 구조 (Optimal Substructure): 문제를 더 작은 하위 문제로 나눌 수 있으며, 이 하위 문제들의 해결 방법을 조합해 전체 문제를 해결할 수 있어야 합니다.중복되는 하위 문제 (Overlapping Subproblems): 동일한 하위 문제가 여러 번 반복되어 계산될 경우, 이전 계산 결과를 저장해 재사용할 수 있습니다.동..