[2026-02-11]
지금 시간이 없는 관계로 나중에 배열에 대한 자세한 설명을 하겠습니다.
요즘 일하느랴 바빠요.
[2026-03-31]
C, C++, Java 등에서 Array(정적 배열) 기능을 제공합니다.
물론 Python에서도 import array를 통해 정적 배열을 사용할 수 있으나
Python에서는 기본적으로 동적 리스트(List) 기능을 제공합니다.
그러므로 이번 문제에서는 Python은 제외합니다.
자, 그러면 배열에 대해 아주 간단하게 설명하고 끝내겠습니다.

배열(Array)은 컴퓨터 메모리에서 같은 자료형의 데이터들을 연속적으로 저장하는 자료구조입니다.
위 사진처럼 int a[3] = {1, 2, 3};으로 선언하면 컴퓨터 메모리 안에는 임의의 주소값에 배열 a가 할당되며
원소값 1, 2, 3이 연속적으로 저장되어 있습니다.
그리고 이 값을 읽을려면 a[index] 혹은 *(a + index) 형식으로 작성해야 하는데 후자는 포인터를 배워야 하므로 전자만 다루겠습니다.
index는 1이 아닌 0부터 시작하며 배열의 크기가 size일 때 index는 최대 size - 1까지입니다.
예시로 배열의 크기가 3이면 index의 범위는 0 이상 2 이하(혹은 0 이상 3 미만)입니다.
만약 위 사진에서 int a[3] = {1, 2, 3};일 때 원소 1을 읽고 싶다면 a[0]으로 하면 해당 원소를 읽을 수 있습니다.
아래 사진을 통해 각 원소를 어떻게 읽는지 확인할 수 있습니다.

만약 범위를 넘는 index로 값을 읽을려고 하면 무슨 일이 벌어질까요?
아래의 사진을 통해 한 번 a[3]을 출력하도록 하겠습니다.

C++에서는 쓰레기 값이 출력됩니다.
추가로 C와 C++는 성능과 로우 레벨 제어가 더 중요하며 메모리를 수동으로 할당해야 해서 배열 인덱스 체크를 따로 하지 않습니다.
그래서 배열의 범위가 벗어나도 그 지점에 있는 데이터를 그대로 읽기 때문에 쓰레기 값이 나옵니다.
하지만 C#, Java, Python 등은 메모리를 자동으로 할당하기 때문에 메모리 검사를 따로 하여 배열의 범위를 벗어나면 메모리 검사에 의해 IndexError(Python 기준)가 발생합니다.
참고로 JavaScript는 범위 벗어난 index로 읽을려고 하면 undefined로 출력되어 디버깅하는데 골치 아픕니다.
추가로 위에 제가 직접 손글씨로 쓴 사진에서 2차원 배열도 존재하는데 진짜 간단하게 설명하자면 "index 요소가 1개에서 2개로 늘어났다"입니다.
엑셀(Excel) 표를 떠올리면 이해하기 정말 쉬울 것입니다.
그러면 배열은 추가, 읽기, 수정, 삭제 중 무엇이 가능하고 무엇이 안 될까요?
배열은 읽기와 수정이 가능하나 추가, 삭제는 배열의 크기를 변경하는 것이므로 정적 배열(Array)에서는 추가, 삭제를 할 수 없습니다.
만약 int a[3] = {1, 2, 3};일 때 a[1]의 값을 4로 바꿀려면 a[1] = 4;로 하면 됩니다.
그러면 아래의 사진처럼 값이 변경됩니다.

간단하게 알아봤으니 이제부터 백준 문제를 풀겠습니다.
문제 : 개수 세기(10807번)(Bronze V)
문제 링크 : https://www.acmicpc.net/problem/10807
출처 : Baekjoon Online Judge
이 문제는 정말로 간단합니다.
1. 배열의 크기 n을 입력한다.
2. 배열 a[n]을 선언한다.
3. 모든 배열 a의 원소들을 입력하기 위해 for문을 돌린다.
4. 검사 원소 v를 입력한다.
5. 모든 배열 원소들을 for문으로 탐색해서 v와 같은 원소가 몇 개 있는지 검사한다.
6. 출력한다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
int a[n];
for(int i = 0; i < n; i++) {
int x;
cin >> x;
a[i] = x;
}
int v;
cin >> v;
int result = 0;
for(int i = 0; i < n; i++) {
if(a[i] == v) result++;
}
cout << result;
return 0;
}
'(구) 알고리즘 기초(백준 알고리즘 태그) > 자료구조' 카테고리의 다른 글
| [자료구조 기초 - 연결 리스트(LinkedList)]백준 에디터(1406번) 풀이 (C++/Python) (0) | 2026.04.26 |
|---|---|
| [자료구조 기초 - 배열 리스트(ArrayList)]백준 제로(10773번) 풀이 (C++/Python) (0) | 2026.04.25 |
| [자료구조 기초 - 문자열(String)]백준 모음의 개수(10987번) 풀이 (C++/Python) (0) | 2026.04.11 |
| [자료구조 기초 - 실수(Float)]백준 평균은 넘겠지(4344번) 풀이 (C++/Python) (0) | 2026.04.04 |
| [자료구조 기초 - 정수(Integer)]백준 사파리월드(2420번) 풀이 (C++/Python) (0) | 2026.02.17 |