반복문2) for 이중문, continue문, break문

YS_Study.log·2022년 1월 15일
0

for 이중중첩문

for문 내에 for문을 중첩하여 사용할 수 있다. 주의할 점은 안에 while 문도 중첩이 가능하며, while 문 내에 for문 등 서로 중첩이 가능하다.

  • 바깥의 for문의 1번 돌면, 안의 for문은 실행될 조건이 끝까지 다 한번 돈다. → 그 다음 바깥의 for문이 다시 한번 돈다.
// 두개의 주사위를 굴렸을 때 두눈의 합이 6이 되는 경우의 수를 구해야한다면?
// 주사위는 1~6까지 있으니 초기값은? '1' 이다.

let i = 1;   // 주사위 i 초기값 설정
let j = 1;   // 주사위 i 초기값 설정

for (let i = 1; i <= 6; j++) { // 밖의 폴문이 한번 돌면
 for (let j = 1; j<= 6; j++) { // 안의 for문이 끝까지 한번 돈다. 다 돌면 다시 바깥의 for문이 한번 돈다.
  if (i + j === 6)   // 두 주사위의 합이 6이면 참이다. true! 
 }
}
comsole.log(`[${i}, ${j}]`)
// 경우의 수 값 : [1,5] [2,4] [3.3] [4,2] [5,1]

break 문 ({}코드블록 탈출)

break 문을 사용하면 레이블 문, 반복문 또는 switch 문의 코드블록을 탈출할 수 있다.
만약 레이블 문, 반복문 또는 switch 문 외에 break문을 사용하면 문법에러 (SyntaxError)가 발생한다.

  • 코드블록 내에 if문 으로 탈출조건을 만들고 break문으로 탈출한다.
for (let count = 0; count < 5; count++) {
console.log(count);
 if (count === 2) {// count 값이 2 일때
   break;        // break문을 만나 2 까지만 출력되고 코드블록을 탈출함.
 }
}
// count = 0 // count = 1 // count = 2 

continue 문

continue 문을 사용하면 반복문의 코드 블록의 실행을 중단하고 반복문의 증감식을로 실행시킨다.

continue 문을 사용하면 if문 밖에 코드를 작성할 수 있고, continue문을 사용하지 않으면 if문 내에 코드를 작성해야한다.

// continue문 사용하여 특정 문자의 개수를 세는 예
let str= 'Hello World';
let search = 'l';
let count = 0;
let i = 0;
 for (let i = 0; i < str.lenght; i++){ // for문으로 i가 문자열의 인덱스가 크지 않을떄 까지 문자열을 순회하며 
   if (str[i] !== search) {continue; // 문자열의 인덱스[i]가 l 인덱스 위치가 아니면 i++증감문은 재실행한다. 
  count++;              // continue문이 실행되면 실행되지 않는다.  
 }                      // 문자열의 인덱스가 l의 위치에 오면 참이 되어 count 개수가 +1 된다.
}                      
console.log(count) // 3 // 문자열에서 l 의 개수는 3이다.

// continue문 없을때 특정 문자의 개수를 세는 예
let str= 'Hello World';
let search = 'l';
let count = 0;
let i = 0;
 for (let i = 0; i < str.lenght; i++){ // for문으로 i가 문자열의 인덱스가 크지 않을떄 까지 문자열을 순회하며 
   if (str[i] === search) {            // 문자열의 인덱스[i]가 l 인덱스 위치면
  count++;                         // 문자열의 인덱스가 l의 위치에 오면 참이 되어 count 개수가 +1 된다.
 }
}         
console.log(count) // 3 // 문자열에서 l 의 개수는 3이다.
profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!

0개의 댓글