반복문이란 우리가 흔히 알고 있는 for문, while문
맞습니다. 고 두개이지요. 이 아이들을 좀 더 낱낱이 살펴 보자구요.
우선 반복문은 뭔가... 내게 참 헷갈리는 아이었다. 그러다가 어느날 갑작스레 해야만 했고 앞으로도 해야하는 알고리즘에게 멱살잡히다싶이 하여 깨닫게 되었다.
난 반복문을 탐색의 도구라고 말하고싶다.
배열이 있다면 배열을 샅샅이 탐색하니까, 또 어떨때는 내가 이렇게 탐색해줘 조건을 내걸면 또 조건에 맞춰 탐색해서 결과물을 내놓는다.
for(let i=0; i<3; i++){
console.log(i)
}
console.log(i) //0,1,2
여기서 for문을 사용했고 i의 초기값을 0으로 설정해 주었다. 그리고 i는 3보다 작은 수 까지만 탐색하라고 조건을 걸었다. 처음 탐색에서 i는 자신의 초기값인 0을 뱉어냈고, 계속해서 자신에게 + 해가며 3이 되기 전까지 돌아 0,1,2라는 수를 뱉어냈다.
난 2중 for문이 제일 헷갈렸었다. 2중 for문은 도대체 어떻게 돌아가는거야.. 했는데 간단했다. 코드와 예시를 보자
for(let i=0; i<3; i++){
for(let j=0; j<3; j++){
console.log(`${i} + ${j} = ${i + j}`)
}
}
// 0 + 0 = 0
0 + 1 = 1
0 + 2 = 2
...
2 + 1 =3
2 + 2 = 4
for문을 보면 i는 결국 3 직전인 2까지 돌아 0,1,2가 될 것이고 j도 마찬가지로 0,1,2가 될 것이다.
그렇다면 이제부터 이거다 i가 있는 for문이 j가 있는 for문을 감싸는 것이니 i가 기준이 된다. 마치 구구단처럼. 1단이면 1을 기준으로 1~9가 곱해지지 않나. 그와 비슷하다.
구구단이라고 생각해보자. i단이다.
console.log(${i} + ${j} = ${i + j}
) 이걸 보고 찬찬히 해보자
i의 0을 기준으로 j의 0,1,2를 대입한다.
i + j = 결과값
0 + 0 = 0
0 + 1 = 1
0 + 2 = 2
0인 i를 기준으로 j가 다 돌았으니 이제 i의 1을 기준으로 도는 거다
i + j = 결과값
1 + 0 = 1
1 + 1 = 2
1 + 2 = 3
1인 i를 기준으로 j가 다 돌았으니 이제 i의 2를 기준으로 돌기
i + j = 결과값
2 + 0 = 2
2 + 1 = 3
2 + 2 = 4
이렇게다. 2중 for문 어렵지 아니아니하다
변수에 대한 초기화(i=0), 업데이트 부분(i++)을 문법 자체에서 제공을 하느냐이고, while은 특정 조건을 가질때 많이 사용한다. 예를들어 while(num>=3) 이런식으로 특정 조건을 사용할 때