분류 전체보기 133

[Java] StringBuilder

StringBuilder는 문자열을 다룰 때 성능을 크게 향상시키기 위해 사용된다. 문자열 불변성 문제 해결: Java의 String 클래스는 불변(immutable)이기 때문에 문자열을 생성할 때마다 객체가 새롭게 생성되어, 메모리 사용량이 증가하고 성능이 저하된다. 여기서 문자열의 생성이란, 문자열끼리의 연결도 포함하는데 문자열의 덧셈을 하면 새 문자열이 생성되기 때문이다.메모리 효율성: StringBuilder는 내부적으로 가변 크기의 문자 배열을 사용하므로, 문자열 연결 작업에서 불필요한 객체 생성을 줄입니다.시간 복잡도 개선: String 연결 O(n^2) -> StringBuilder 사용 O(n)사용 사례: 큰 출력, 문자열 연결의 반복, 복잡한 출력 형식 public class Main {..

Java 2025.04.25

[Python] all 함수

iterable(리스트, 튜플, 세트 등)의모든 요소가 True?? →  True 반환 False가 하나라도 있으면 → False 반환    print(all([True, True, True])) # ✅ Trueprint(all([True, False, True])) # ❌ Falseprint(all([1, 2, 3])) # ✅ True (0이 아니면 True)print(all([1, 0, 3])) # ❌ False (0은 False)print(all([])) # ✅ True (비어 있으면 기본적으로 True)  ※ 리스트에 " 숫자 0 "이 있는지 확인할 때 유용!!※ 이와 유사한 함수로 an..

Python 2025.04.11

[알고리즘] 유니온 파인드

Union-Find (합집합 찾기 알고리즘) = Union 연산 + 루트를 찾는 Find 연산두 노드가 같은 집합에 속하는지 판별하는 그래프 알고리즘Disjoin Set: 서로소 집합(상호 배타적 집합) ★ Find(x)원소 x가 속한 집합의 대표(루트)를 찾는 함수.경로 압축(Path Compression) 기법을 써서 효율성을 높을 수 있음.※ 자신의 부모 노드만 저장하게 되면 재귀 호출을 통한 탐색에 시간이 많이 들기 때문에,인접한 부모 노드가 아니라 루트 노드의 번호를 저장해야함! ★ Union(x, y)원소 x와 y가 속한 두 집합을 하나로 합치는 함수.대표 노드를 기준으로 한 집합으로 병합.# 초기1   2   3   4   5 ↑   ↑   ↑   ↑   ↑ 자기 자신이 루트# union(1..

Algorithm 2025.04.11

[Python] 힙 라이브러리 (heapq)

최소힙import heapqmin_heap = [6, 1, 8, 5, 4, 3, 7]# 힙 변환 # 시간복잡도 O(N)heapq.heapify(min_heap) #[1, 4, 3, 5, 6, 8, 7]# root(최소값) 반환, 비어 있는 경우 IndexError# 시간복잡도 O(logN)heapq.heappop(min_heap) #[3, 4, 7, 5, 6, 8]# 힙에 원소 추가heapq.heappush(min_heap, 2) #[2, 4, 3, 5, 6, 8, 7] 힙 (heap)은 최댓값 및 최솟값을 찾아내는 연산을 빠르게 하기 위해 고안된완전이진트리(complete binary tree)부모노드와 자식노드 간에만 대소관계가 성립되지만,형제 사이는 상관없다.부모노드의 순서가 ..

Algorithm 2025.04.07

[AWS] RDS 외부접속 오류 / AWS의 IGW

AWS의 RDS를 로컬에서 연결하기 위해서는 여러가지 설정이 필요하다. 1. 퍼블릭 엑세스 설정 : 예2. 보안 그룹의 인바운드 규칙 추가 : 내 IP 주소 규칙 추가 필요 이렇게 해도 안되는데 이유 다음과 같다 AWS에서 VPC 서브넷을 생성할 경우 Internet Gateway(IGW)와 연결되는 서브넷을 Public Subnet이라고 하고, 연결되어 있지 않은 서브넷을 Private Subnet이라고 한다. RDS를 생성하면 RDS의 서브넷은 private으로 설정되어 있기때문에RDS의 서브넷은 IGW와 연결되어 있지 않아서 인터넷 접근이 불가한 것이다.Public Subnet으로 변경해 줄 필요가 있다. 방법:AWS의 VPC로 이동 -> 라우팅 테이블 메뉴로 이동-> RDS의 라우팅 테이블 클릭 ..

컴퓨터 지식 2025.03.30

[Python] [[]] * N 의 주의점

빈 리스트가 N개 나열된 중첩리시트를 만들고 싶어서 다음과 같은 코드를 실행했더니 엄청난 오류가 생겼다.# N은 임의의 정수answer_lst = [[]] * Nanswer_lst[0] = ['1']# print(answer_lst) # for문 돌기 전 리스트 상태 : [['1'], [], []]for i in range(N): answer_lst[i].append('1') print(i, '번째') print('answer_lst[i]:', answer_lst[i]) print('answer_lst:', answer_lst) # 출력값 # 0 번째# answer_lst[i]: ['1', '1']# answer_lst: [['1', '1'], [], []]#..

Python 2025.03.28

[SQL] WITH 문

SQL의 WITH문은 쿼리를 작성할 때 하나의 서브쿼리 또는 임시 테이블처럼 활용할 수 있는 기능이다.코드 가독성 향상성능 개선: WITH문을 통해 중복 실행 줄일 수 있음재사용성: 정의된 WITH절은 메인 쿼리 내에서 여러 번 참조될 수 있어 코드의 재사용성을 높임 WITH 테이블명1 AS ( -- 서브쿼리 ) [, 테이블명2 AS ( -- 콤마로 구분하여 연속 정의 가능 -- 서브쿼리 ) , 테이블명2 AS ( -- 서브쿼리 )] SELECT * FROM 테이블명1 [JOIN 테이블명2 LEFT JOIN 테이블명3]

SQL 2025.03.27