본문 바로가기

■ 프로그래밍/JavaScript

반복문(Loop) (1) - for문

반복문은 특정 조건을 반복하는 것으로, 같은 코드를 매번 사용해야 할 때 주로 사용된다. 

 

가장 대표적인 반복문에는 For문이 있다.

알고리즘 문제에서 가장 많이 사용되는 것 중 하나가 바로 for문인 것 같다.

 

For문

기본 구조

for ( 시작; 종료 되는 시점; 증감 조건) {
	내용
}

아주 간단한 for문을 적용하면 아래와 같다. 

for ( var i = 0; i < 3; i++) {
	console.log(i);
}

// output: 
// 0
// 1
// 2

반복하는 변수 i는 iterate(반복하다)의 첫 글자를 따온 것으로 통상 여러 반복문을 사용해야 할 경우 i, j, k 순으로 사용한다. 

출력 값을 보면 콘솔이 한 줄 씩 찍히는 것을 보아 하나씩 반복되는 것을 알 수 있다. 

i가 3이 됨과 동시에, 두번째 조건이 false가 되므로 for문은 종료된다. 

 

for문의 첫번째 인자로 받는 시작과 증감 조건을 수정하면 감소하는 반복문도 만들 수 있다. 

for ( var i = 3; i > 0; i--) {
	console.log(i);
}

// output: 
// 3
// 2
// 1

 

반복문은 배열에서도 자주 쓰인다. 

만약 어떤 쇼핑몰의 수 십개의 상품에 대한 가격이 일정한 비율로 증감한다면, 수작업으로 모든 내용을 바꿀 수도 있지만 반복문을 사용하면 더 쉬워진다. 

var product = ["shoes", "pants", "tshirts"];

for (var i = 0; i < product.length; i++) {
	console.log(product[i]);
}

// output:
// shoes
// pants
// tshirts

위의 기본 구조와 비슷한데, 가장 중요한 점은 종료되는 시점을 배열.length로 설정한 것이다. 

우리는 해당 배열이 몇 개가 있는지 알 수 없으며, 언제 배열의 데이터가 추가/삭제 될지 모른다. 따라서 종료되는 시점은 늘 배열의 데이터 개수에 따라가도록 설정하는 것이 바람직하다. 

 

중첩 반복문 (Nested Loops)

반복문 안에 또 다른 반복문이 있는 것을 중첩 반복문이라 한다. 

var first = [1, 2, 3];
var second = [1, 3, 6];

for (var i = 0; i < first.length; i++) {
	for (var j = 0; j < second.length; j++) {
    	if (first[i] === second[j]) {
        	console.log("중복된 숫자는", second[j]);
        }
    }
}

// output:
// 중복된 숫자는 1
// 중복된 숫자는 3

첫번째 for문으로 first 배열의 요소를 하나씩 돌리고, 그 안의 for문으로 second 배열의 요소를 확인한다. 

그 후, if문으로 first[0] === second[0], first[0] === second[1], first[0] === second[2]를 차례대로 비교한 후, 같은 숫자가 있다면 console.log로 찍어내는 것이다.