Java에서 배열 다루기: 개념부터 메모리 구조까지
자바에서 배열은 동일한 데이터 타입의 여러 값을 하나의 변수로 관리할 수 있게 해주는 핵심적인 자료구조입니다. 배열을 이해하면 데이터 처리 능력이 크게 향상되며, 컬렉션 프레임워크를 학습하는 데도 기반이 됩니다.
배열의 정의와 주요 특징
배열은 동일한 타입의 요소를 순차적으로 저장하는 고정 크기의 자료구조입니다. 다음 세 가지 특성을 가집니다:
...
7월 14일 04:31에 게시됨
정수 배열에서 최대 부분 배열 합 찾기: 세 가지 접근 방식
정수 배열이 주어졌을 때, 그 안에서 연속된 부분 배열 중 합이 가장 큰 부분 배열을 찾아 그 합을 반환하는 것은 고전적인 알고리즘 문제입니다. 이 문제는 다양한 최적화 기법을 통해 해결할 수 있으며, 여기서는 세 가지 주요 접근 방식인 무차별 대입(Brute Force), 분할 정복(Divide and Conquer), 그리고 동적 계획법(Dynamic Programming)을 다룹니다. 특히, 대규모 ...
7월 13일 17:10에 게시됨
포인터와 배열을 활용한 C언어 프로그래밍 예제
다음은 C언어에서 포인터와 배열을 사용하는 다양한 예제들입니다.
2차원 배열과 포인터를 이용한 요소 접근 및 출력
#include <stdio.h>
int main() {
int arr[3][4] = {0};
int (*ptr)[4] = arr;
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 4; ++j) {
arr[i][j] = i * 4 + j + 1;
printf("%d ...
7월 11일 03:04에 게시됨
C 언어 포인터 심층 분석
포인터 기초
메모리 이해
메모리는 데이터를 저장하는 장치입니다. 컴퓨터 시스템에는 두 가지 주요 유형의 메모리가 있습니다:
외부 저장 장치
외부 저장 장치는 장기간 데이터를 보관하며, 전원이 꺼져도 데이터가 유지됩니다(비휘발성).
일반적인 외부 저장 장치: 하드 디스크, USB 플래시 드라이브, 광 디스크 등
내부 메모리
내부 메모리(램)는 전원이 공급되는 동 ...
7월 10일 21:16에 게시됨
이분 탐색을 활용한 배열 내 특정 값의 범위 찾기
정렬된 정수 배열 nums와 목표값 target이 주어졌을 때, 이 목표값이 처음 나타나는 위치와 마지막으로 나타나는 위치를 반환하는 문제입니다. 만약 목표값이 존재하지 않으면 [-1, -1]을 반환해야 하며, 알고리즘은 반드시 O(log n) 시간 복잡도를 가져야 합니다.
예시:
입력: nums = [5,7,7,8,8,10], target = 8
출력: [3,4]
초기 시도에서는 모든 일치하는 인덱스를 s ...
7월 10일 18:43에 게시됨
스택과 큐 자료구조 구현
스택과 큐는 컴퓨터 과학에서 가장 기본적인 자료구조 중 하나로, 각각 후입선출(LIFO)과 선입선출(FIFO) 특성을 가집니다. 이번 글에서는 배열 기반과 연결 리스트 기반의 두 가지 구현 방법을 모두 다룹니다.
스택(Stack) 자료구조
스택은 후입선출(LIFO) 원칙을 따르는 자료구조로, 가장 마지막에 추가된 요소가 가장 먼저 제거됩니다.
배열 기반 스택 구현
/* 스택 헤 ...
7월 7일 20:13에 게시됨
배열 및 문자열 처리 실습
실습 1: 배열에서 최솟값과 최댓값 찾기
다음은 주어진 배열에서 최솟값과 최댓값을 찾는 코드입니다.
코드 보기
#include <stdio.h>
#define SIZE 5
void getData(int arr[], int size);
void displayData(int arr[], int size);
void findMinMax(int arr[], int size, int *min, int *max);
int main() {
int data[SIZE];
int minValue, maxValue;
...
7월 2일 02:06에 게시됨
C++에서의 배열과 포인터
C++ 책이나 튜토리얼 대부분은 배열과 포인터를 함께 다룹니다. 그 이유는 무엇이며, 둘 사이에는 어떤 연관성이 있을까요?
C++에서 배열과 포인터는 밀접하게 연결되어 있으며, 주요 관계는 다음과 같습니다.
1. 배열 이름은 포인터다
대부분의 상황에서 배열 이름은 배열의 첫 번째 요소를 가리키는 포인터로 암시적으로 변환됩니다. 예를 들어, int arr[5];라는 배열 ...
6월 29일 18:28에 게시됨
PTA 배열과 정렬, 탐색 문제 풀이 및 핵심 알고리즘 설명
함수형 문제풀이
6-1 2차원 배열에서 최댓값과 그 위치 찾기
이 문제는 이중 반복문을 통해 2차원 배열 전체를 순회하며 최댓값과 해당 인덱스를 추적하는 기본적인 탐색 문제다. 전역 변수 Row와 Col에 최댓값의 위치를 저장해야 하며, 초기값 설정 시 주의가 필요하다.
int fun(int arr[4][M]) {
int maxVal = arr[0][0];
Row = 0; Col = 0;
for (int i = 0; ...
6월 28일 23:45에 게시됨
C++로 배우는 배열과 연결 리스트 기본 연산
배열 (Array)
1. 배열 초기화
// 스택에 할당
int arr[5];
int nums[5] = { 1, 2, 3, 4, 5 };
// 힙에 할당
int* agg = new int[5];
int* ngg = new int[5] {1, 2, 3, 4, 5};
2. 요소 접근
int getElement(int* data, int idx) {
return *(data + idx);
}
3. 데이터 삽입
void insertElement(int* data, int len, int value, int pos) {
for (int i = len - ...
6월 20일 19:52에 게시됨