5.1.1 for 문에서 벗어나기
이렇게 같은 로직을 이용한 반복 작업이라면 대부분은 반복문을 이용하여 해결할 수 있습니다. 하지만 반복문으로는 해결되지 않을 때도 있습니다. 예를 들어 배열 arr에서 2개의 원소를 조합해야 한다고 합시다. 다음 코드처럼 이중 반복문을 이용하여 쉽게 구현할 수 있습니다.
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
// arr[i]와 arr[j] 조합
}
}
그런데 3개의 원소를 조합해야 한다면 어떻게 될까요? 중첩 반복문이 3중으로 늘어나게 됩니다.
for (int i = 0; i < arr.length; i++) {
for (int j = i + 1; j < arr.length; j++) {
for (int k = j + 1; k < arr.length; k++) {
// arr[i], arr[j], arr[k] 조합
}
}
}
문제가 보이기 시작합니다. 4개의 원소를 조합해야 한다면 4중, 5개의 원소를 조합해야 한다면 5중 반복문이 필요하며, 심지어 조합해야 하는 원소가 문제에서 주어지는 변수일 때는 반복문을 작성할 수 없기 때문에 다른 방식으로 구현해야 합니다.