ki-sd 님의 블로그
[2026-03-11] 중첩 반복문과 2차원 데이터 처리의 시각화 본문
반복문 내부에 또 다른 반복문이 존재하는 다중 루프 구조를 통해, 1차원적인 흐름을 넘어선 다차원 데이터 처리 방식을 익혔다.
1. 중첩 루프(Nested Loop)의 논리적 구조
- 바깥쪽 루프(Outer Loop)의 인덱스가 1회전할 때, 안쪽 루프(Inner Loop)는 자신이 가진 조건의 전체 회차를 전부 순회한다.
- 시각화 훈련: 시계의 시침(Outer)과 분침(Inner)의 관계로 이해했다. 구구단 출력(2단부터 9단까지, 각 단마다 1~9를 곱함)이나 별 찍기 실습을 통해 두 개의 변수(i, j)가 교차하며 만들어내는 매트릭스(Matrix) 형태의 데이터 출력을 완벽히 제어했다.
2. 디버깅과 트레이싱(Tracing)
- 머릿속으로만 계산하기 복잡한 다중 루프 로직을 검증하기 위해 변수의 변화 과정을 추적하는 기법을 배웠다. 출력문(System.out.println)을 중간중간 삽입하여 i와 j의 값이 회차마다 어떻게 변하는지 콘솔에서 직접 확인하며 알고리즘의 결함을 찾아내는 디버깅 능력을 키웠다.
3. 시간 복잡도(Time Complexity)와 성능 최적화
- 데이터의 개수가 $n$개일 때 단일 루프는 $n$번 실행되지만, 2중 루프는 $n^2$, 3중 루프는 $n^3$번 실행된다는 성능 상의 한계를 인지했다.
- 데이터 량이 많아질수록 기하급수적으로 속도가 느려지므로, 가급적 루프의 뎁스(Depth)를 깊게 만들지 않거나, 내부에서 불필요한 연산이 발생하기 전에 조기에 break로 끊어주는 알고리즘 최적화의 중요성을 깊이 체감했다.
'JavaStudy' 카테고리의 다른 글
| [2026-03-13] 다차원 배열의 실전 응용과 알고리즘 설계 (0) | 2026.04.13 |
|---|---|
| [2026-03-12] 배열(Array)의 구조적 한계와 메모리 관리 (0) | 2026.04.13 |
| [2026-03-10] 반복문의 핵심 메커니즘 - for와 while (0) | 2026.04.13 |
| [2026-03-09] 2026-03-09 : 종합 예제와 알고리즘의 기초 설계 (0) | 2026.04.13 |
| [2026-03-06] 제어문 - 조건문을 활용한 로직 분기 설계 (0) | 2026.04.13 |
