4.2 배열 원소 접근과 반복문 활용법 완전정복 🔄 초보자를 위한 자바 배열 처리 가이드
배열 원소 접근과 반복문 활용법 완전정복 🔄 초보자를 위한 자바 배열 처리 가이드
배열 요소 하나하나를 제대로 다뤄야 진짜 실력자! 반복문으로 배열을 완전 정복하는 실전 팁, 지금 시작합니다.
안녕하세요, 개발을 처음 시작하신 분들이 자주 만나는 개념 중 하나가 바로 ‘배열’이죠. 배열을 선언하고, 값을 넣고, 그 값을 꺼내서 사용하는 방법까지 익히면 다양한 프로그래밍 문제를 훨씬 쉽게 풀 수 있어요. 이번 포스트에서는 자바(Java)에서 배열의 각 원소에 접근하고, 반복문을 활용하여 배열을 효율적으로 처리하는 방법까지 자세히 알려드릴게요. 특히 초보자들이 자주 혼동하는 일반 for문과 향상된 for문의 차이점도 예제와 함께 살펴보겠습니다. 코딩이 막막하게 느껴지는 분들도, 이 글 하나로 배열 활용에 대한 감을 제대로 잡아보세요!
목차
1. 배열 원소에 접근하는 방법 📌
자바(Java)에서 배열은 같은 자료형의 값들을 하나의 변수 이름으로 다룰 수 있게 해주는 구조예요. 배열이 편리한 이유는 인덱스(index)를 통해 각각의 값을 손쉽게 접근하고 변경할 수 있기 때문입니다.
배열 원소 접근 기본 문법
int[] scores = {90, 80, 70};
System.out.println(scores[0]); // 90 출력
System.out.println(scores[1]); // 80 출력
System.out.println(scores[2]); // 70 출력
중요한 점은 배열의 인덱스는 0부터 시작한다는 거예요. 그래서 세 번째 요소는 scores[2]
로 접근해야 합니다.
배열의 길이 확인하기
배열의 크기, 즉 요소의 개수는 배열이름.length
로 확인할 수 있어요. 이걸 통해 반복문과 함께 배열 전체를 순회할 때 유용하게 사용하죠.
System.out.println(scores.length); // 3 출력
배열 인덱스를 잘못 사용하면?
존재하지 않는 인덱스를 참조하면 ArrayIndexOutOfBoundsException 오류가 발생합니다. 예를 들어 scores[3]
처럼 실제 길이보다 큰 인덱스를 접근하면 에러가 나요. 항상 .length
를 활용해 안전하게 처리하는 습관이 필요해요.
요약: 배열 원소 접근 핵심 정리
- 인덱스는 0부터 시작!
-
배열이름.length
로 크기 확인! - 범위를 벗어난 접근은 반드시 예외 발생!
2. 배열의 값을 조회하고 변경하기 🔍
배열의 가장 큰 장점 중 하나는 특정 위치의 값을 쉽게 읽고 변경할 수 있다는 점이에요. 인덱스를 이용하면 원하는 값에 바로 접근할 수 있으니까요.
배열 값 조회와 변경 예제
int[] nums = {1, 2, 3, 4, 5};
// 값 조회
System.out.println("첫 번째 값: " + nums[0]); // 1 출력
// 값 변경
nums[0] = 100;
System.out.println("변경된 첫 번째 값: " + nums[0]); // 100 출력
nums[0] = 100;
이 한 줄로 기존의 1을 100으로 바꿨어요. 이처럼 배열은 변경 가능한(mutable) 데이터 구조입니다.
배열 전체 값 출력해보기
배열 전체를 한 줄씩 출력해보고 싶다면 반복문이 필요해요. 이건 STEP 4에서 다룰 내용이지만, 간단히 예를 들어볼게요.
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
하나하나 꺼내서 출력하는 것보다 반복문과 조합해서 사용하는 게 배열을 더 잘 활용하는 방법이에요.
중간 정리 – 배열 값 변경 포인트
- 배열의 각 요소는 인덱스로 접근 가능
- 값을 변경할 땐
배열이름[인덱스] = 새로운 값;
사용 - 반복문으로 배열 전체를 순회하면서 변경 가능
3. 반복문을 활용한 배열 순회 💫
배열을 다룰 때 반복문은 없어선 안 될 도구예요. 요소가 3개든 300개든, 반복문을 쓰면 하나하나 꺼내서 작업하는 걸 자동으로 처리해주니까요. 자바에서는 기본 for문과 향상된 for문 두 가지 방법을 사용할 수 있어요.
기본 for문으로 배열 순회하기
int[] scores = {95, 85, 75};
for (int i = 0; i < scores.length; i++) {
System.out.println("인덱스 " + i + ": " + scores[i]);
}
기본 for문은 인덱스를 직접 조작할 수 있어서 요소의 위치 정보가 필요한 경우에 유리해요. 예를 들어 짝수 인덱스만 처리하거나, 인덱스를 조건에 따라 다르게 처리할 수 있죠.
향상된 for문 (for-each) 사용하기
for (int score : scores) {
System.out.println("점수: " + score);
}
for-each 문은 인덱스를 몰라도 배열의 값을 순서대로 가져올 수 있어서 읽기 전용 처리에 매우 유용해요. 하지만 요소의 값을 바꾸거나 인덱스를 이용해야 하는 상황이라면 일반 for문을 써야 합니다.
두 반복문 비교 요약
구분 | 기본 for문 | 향상된 for문 |
---|---|---|
인덱스 사용 | 가능 | 불가능 |
값 변경 | 가능 | 불가능 |
코드 간결성 | 조금 더 길다 | 더 간결하다 |
상황에 따라 두 반복문을 적절히 활용하는 게 중요해요. 단순히 배열 전체를 순회하며 출력하거나 검사할 때는 for-each 문이 깔끔하고 좋고, 복잡한 로직이 필요한 경우엔 일반 for문이 유리하죠.
4. 일반 for문과 향상된 for문의 차이점 🔄
자바를 배우면서 가장 자주 혼동하는 것 중 하나가 기본 for문과 향상된 for문 (for-each)의 차이예요. 실제로 어떤 걸 써야 할지 헷갈리는 경우도 많고요. 그래서 여기서 그 차이를 명확히 정리해볼게요.
기본 for문 vs 향상된 for문 – 예제 비교
기본 for문으로 배열 요소 수정하기
int[] scores = {70, 80, 90};
for (int i = 0; i < scores.length; i++) {
scores[i] += 5; // 각 점수에 5점씩 추가
}
기본 for문은 인덱스를 통해 배열의 값을 직접 변경할 수 있어요. 이건 향상된 for문에서는 불가능하답니다.
향상된 for문에서 값 변경은 불가!
for (int score : scores) {
score += 5; // 실제 배열에는 적용되지 않음
}
위 코드는 배열 요소를 직접 수정하는 것처럼 보여도, 실제로 score
는 복사된 값이에요. 원본 배열에는 아무 변화가 없어요. 그래서 읽기 전용으로만 사용할 수 있다는 걸 꼭 기억하세요.
어떤 상황에 어떤 반복문을 쓰면 좋을까?
- 배열 요소를 출력하거나 검사만 할 때 → 향상된 for문
- 배열 요소를 변경하거나 인덱스를 활용할 때 → 기본 for문
두 반복문은 기능이 겹치기도 하지만, 성격이 달라요. 문제의 성격에 맞게 선택해서 쓰는 것이 가장 중요하죠.
5. 실전 예제로 배우는 배열 처리 연습 ✏️
이제 이론은 충분히 익혔으니, 실전 예제를 통해 진짜로 써보면서 익혀볼 시간이에요. 아래 예제들은 실제 개발에서 자주 마주치는 상황을 기반으로 했습니다. 기초 반복문 + 배열 활용 능력을 함께 길러볼 수 있는 좋은 연습입니다.
예제 1. 정수 배열의 평균 구하기
int[] numbers = {10, 20, 30, 40, 50};
int sum = 0;
for (int i = 0; i < numbers.length; i++) {
sum += numbers[i];
}
double avg = (double) sum / numbers.length;
System.out.println("평균: " + avg);
배열의 모든 요소를 더한 후, 요소 수만큼 나누어 평균을 구했어요. 이 예제를 통해 누적 합산과 타입 캐스팅까지 한 번에 경험할 수 있습니다.
예제 2. 배열 요소 중 짝수만 출력하기
int[] data = {13, 24, 7, 92, 35};
for (int num : data) {
if (num % 2 == 0) {
System.out.println("짝수: " + num);
}
}
for-each
문과 if 조건문
을 조합하면 배열 필터링도 간단하게 할 수 있어요. 특정 조건을 만족하는 값만 뽑아내는 것도 중요한 스킬이죠.
예제 3. 최대값 찾기 알고리즘
int[] scores = {88, 95, 70, 100, 92};
int max = scores[0];
for (int i = 1; i < scores.length; i++) {
if (scores[i] > max) {
max = scores[i];
}
}
System.out.println("최대값: " + max);
이건 거의 모든 코딩테스트에서 등장하는 문제 유형이에요. 배열에서 가장 큰 값 또는 가장 작은 값을 찾는 로직은 자바 초보자라면 꼭 익혀야 할 패턴입니다.
실전 감각을 익히기 위한 팁
- for문과 조건문을 조합하는 연습을 반복하세요
- 배열의 길이를 먼저 파악하고 사용하는 습관을 들이세요
- 실전 문제(백준, 프로그래머스 등)로 감각을 다져보세요!
6. 배열 활용의 핵심 포인트 정리 ✅
이제 배열을 선언하고, 값에 접근하고, 반복문으로 활용하는 방법까지 전체 흐름을 살펴봤습니다. 처음에는 익숙하지 않아도 몇 번 반복해서 연습하다 보면 배열은 오히려 자바에서 가장 직관적인 구조 중 하나라는 걸 느끼실 거예요.
특히 for문과 향상된 for문의 차이를 구분해서 문제 해결에 적절하게 적용하는 능력이 점점 중요해집니다. 무작정 외우기보다는 “왜 이 방식이 필요한가?”를 항상 생각하며 연습해보세요.
여기서 끝이 아니에요. 다음 단계에서는 2차원 배열, 문자열과 배열의 연결 등 더 흥미롭고 실용적인 주제로 확장해볼 수 있어요. 배열은 다양한 알고리즘과 로직의 기본이 되는 만큼, 오늘 다룬 개념은 확실히 익혀두는 걸 추천합니다 💪