Day4. 나를 혼란에 빠뜨린 반복문
1-5(나)/6-10(페어님)/11-16(나)/17-21(페어님) 이렇게 문제를 번갈아 가며 풀었는데,
1-5번 풀 때까지만해도 반복문 자체가 이해가 안되어서 페어분께 계속 물어봤던 기억이 난다ㅋㅋㅋㅋ하...민폐갑;;
다행히 이날 나와 함께 해 주신 페어분께서는 전공자셨고 나의 개떡같은 질문에도 찰떡같은 답변을 해 주셨다👼
덕분에 11-16번 문제 풀 때에는 수월하게 진행했는데, 진짜 고난은 18번부터 시작된 이중반복문이었다. 하하^^
얼추(?) 이해하긴 했는데 내가 이해한 게 맞는지 모르겠어서 주말을 이용해 18-21번 문제를 혼자서 다시 풀어보았다.
그리고나서 21번 문제와 함께 내 식대로 정리해보는 이중 반복문(이중 for문) 문법
이중 for문
이해가 안될땐 도와줘요 구글센세!!
'자바스크립트 이중반복문'이라고 검색해보니 잘 정리된 블로그 글들이 정말 많았다.
이중 반복문은 말그대로 반복문을 두번 중첩해서 사용하는 것이다.
예를 들어 구구단을 출력할 때,
어떤 수에 1부터 9까지 곱하는 계산을 9번 반복하고,
이 계산을 2단부터 9단까지 8번 반복해야한다.
이럴 때 필요한 게 이중 반복문!
for(let i = 2; i <= 9; i++){
for(let j = 1; j <= 9; j++){
console.log(i * j)
}
}
이 때 바깥쪽 for문을 실행하다가 한번 더 for문을 만나게 되면, 안쪽에 있는 for문을 먼저 실행시킨다.
i = 2일 때 : 2 * 1 / 2 * 2 / 2 * 3 / 2 * 4 / 2 * 5 / 2 * 6 / 2 * 7 / 2 * 8 / 2 * 9 (j가 1부터 9까지 반복된 후 loop종료)
안쪽 for문의 반복이 종료되고 나면 다시 바깥쪽의 for문이 실행된다.
i = 3일 때 : 3 * 1 / 3 * 2 / 3 * 3 / 3 * 4 / 3 * 5 / 3 * 6 / 3 * 7 / 3 * 8 / 3 * 9
i = 4일 때 : 4 * 1 / 4 * 2 / 4 * 3 / 4 * 4 / 4 * 5 / 4 * 6 / 4 * 7 / 4 * 8 / 4 * 9
.
.
이렇게 i = 9일때까지 반복문들이 중첩되어 실행되는 거라고 한다!
완전 이해 완료ㅎㅎ
반복문을 멈추고 싶다면 if와 break를 잘 활용해서 사용하면 된다고 한다.
* 이해하는 데 참고했던 블로그
makeMarginalString(str)
코플릿 마지막 문제였던 makeMarginalString함수 작성!
만약에 str이 'love' 라면 llolovlove 요렇게 출력이 되게 만들어야 한다.
love의 인덱스가 0123이라고 생각했을 때, 아래와 같은 규칙으로 문자열을 추가해줘야한다.
i = 0일 때 : 0 입력
i = 1일 때 : 0 1 입력
i = 2일 때 : 0 1 2 입력
i = 3일 때 : 0 1 2 3 입력
그러면 이 문자열들이 추가될 변수 하나를 지정해 줘야 하고, (let string = ' '; 으로 변수 선언)
str의 인덱스를 입력해줄 for문이 하나 더 있어야 한다.
그렇게 만들어진 코드!
function makeMarginalString(str) {
let string = '';
for(let i = 0; i < str.length; i++){
for(let j = 0; j <= i; j++){
string = string + str[j];
}
}
return string;
}
어우 뿌듯하당
댓글