array고정된 데이터 크기연속된 데이터선언된 배열에는 데이터가 저장된 메모리의 맨 첫번째 주소를 가지고 있게 된다.배열의 타입에 따라서, 다음 데이터의 시작 위치를 알 수 있다.int arr[5] = {1,3,4,6,8}일때 arr[1] 을 꺼낸다고 하면, int 자료형은 4byte이므로, arr에 저장된 주소에서 4byte만큼의 크기만큼 더해서 그곳에서 4byte 만큼의 자료를 꺼내오게 된다. 그 값이 바로 3이된다. RandomAccess 메모리에 저장된 데이터에 접근하기 위해서는 주소값을 알아야 한다. 배열 변수는 자신이 할당받은 메모리의 첫 번째 주소깂을 가진다. 배열은 연속적/순자척으로 저장되어있기 때문에, 첫 주소값만 알고 있다면 어떤 인덱스에서 즉시 접근이 가능하다. 이를 Direct Ac..
동적 배열도 결국 Array다 리사이징넣어야 되는 데이터가 Array가 처음 할당 받은 메모리 크기보다 클 때, 리사이징이 동작한다.새로운 메모리 주소를 할당받게 되는데, 그 크기는 기존 배열의 두 배가 기준이 된다. 왜냐하면, 리사이징은 기존에 있던 데이터를 새로운 메모리 주소에 옮기고 이전 데이터를 지워야 하는데, 이때만 O(n)의 시간복잡도를 가지게 된다. 이 리사이징 작업이 데이터를 추가할 때마다 동작하게 되면, 추가할 때마다 O(n)의 작업을 다시 해야 한다. 그래서 한 번 늘릴때 통크게 늘리는 것이다. 파이썬이 사용하게 되는 것이 dynamic array다문제에서 list를 사용하게 될 때를 잘 구분해야함 선언 및 초기화선언시에는 n개의 데이터를 넣어야하기 때문에 O(n)접근O(1)추가데이터 ..
반복문완전탐색 - O(n)2 제약조건에 간당간당함def twoSum(nums, target): n = len(nums) #n은 주어진 배열의 길이 for i in range(n): # 0~n 까지 i ++ for j in range(i+1,n): # i+1 ~ n까지 j++ # i와 j에 해당하는 값들을 더해 target의 값이 나오면 True if nums[i] + nums[j]== target: return True return False # 아니라면 False가 된다. print(twoSum(nums=[1,2,3,4,5],target=10))Sort& Two Pointer 투 포인터의 기본적인 생각은 이렇다.배열의 양 끝단에 포인터를 하나씩 설정한다.만약 정렬된 두 수의 합이 크면 포인터를 왼쪽으로..
- Total
- Today
- Yesterday
- 11기
- Config
- ModelAttribute
- notion
- QueryDSL
- Java
- Python
- 배열
- dto
- 커맨드객체
- 취업
- 데이터베이스 설계
- 일대다
- 다대일
- spring data JPA
- test
- JPA
- 코딩테스트
- @BaseEntity
- security
- SSAFY
- 작업 순서정리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |