TIL 👩🏻‍💻

TIL : 이중 for문

heesue 2021. 3. 7. 16:28

1. 이중 for문

for문 안에 for문이 들어가 중첩되어 있는 형태이다.

중첩의 횟수에 제한이 없기 때문에 다중 for문 또한 존재한다.

이중 for문의 개념을 이해하기에 좋은 예시로 구구단이 대표적이다. (2차원 배열에서도 많이 사용됨.)

구구단 : 2단부터 9단까지 출력
for (let i = 2; i <= 9; i++) { //2단부터 9단을 나타낸다.
  for (let j = 1; j <= 9; j++) { //각 단에서 곱하는 수를 나타낸다.
    console.log(i + '*' + j + '=' + i*j); //출력값 형태는 '2*1=2' 형태이다.
  }
}

+ 이중 for문은 밖에 있는 for문이 1번 실행될 때마다 안에 있는 for문이 모든 반복을 실행하는 것이다. 그 후 밖에 있는 for문이 다시 실행되고 그 후로 반복되는 것이다.


2. 이중 for문 예제

1. 문자열에 등장하는 각 문자를 가지고 만들 수 있는 길이 2의 문자열들을 리턴
function makePermutations(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    for (let j = 0; j < str.length; j++) {
      result = result + str[i] + str[j] + ','
    }
  } return result.slice(0,-1);
}

2. 문자열에 중복된 문자가 존재하는지 여부를 리턴
function hasRepeatedCharacter(str) {
if (str.length === 0) {
  return false;
}
for (let i = 0; i < str.length; i++) {
  for (let j = i + 1; j < str.length; j++) {
    if (str[i] === str[j]) {
      return true;
    } 
  }
}
return false;
}
3. 문자열을 처음부터 한 글자씩 다시 작성하는데,
한 글자를 추가할 때마다 부분적으로 완성된 문자열을 전부 이어붙인 문자열을 리턴
function makeMarginalString(str) {
  let result = '';
  for (let i = 0; i < str.length; i++) {
    for (let j = 0; j <= i; j += 1) {
      result = result + str[j];
    } 
  }
  return result;
}

3번 문제가 이해하기 어려웠다. str = 'abc'인 경우를 생각해보자. 리턴하는 값은 a, ab, abc가 도출되어 'aababc'가 된다.

i를 0부터 실행시키고 j는 i번까지만 반복시켜 i=0, j=0, i=1, j=0, 1 이런 식으로 반복하게끔 한다. i가 늘어남에 따라 j 값의 개수가 늘어나 str[j]를 result에 추가해주면 구할 수 있다.

'TIL 👩🏻‍💻' 카테고리의 다른 글

TIL : 배열, 객체  (0) 2021.03.09
TIL : Calculator  (0) 2021.03.08
TIL : CSS  (0) 2021.03.06
TIL : HTML  (0) 2021.03.05
TIL : 반복문  (0) 2021.03.04