키다리 개발자

Javascript (별, 왕관 찍기, 배열에 값 담기-push()) 본문

Javascript

Javascript (별, 왕관 찍기, 배열에 값 담기-push())

JunBucks 2019. 10. 24. 16:14

Javascript의 for, if문을 이용한 별 찍기와 왕관 찍기를 코드 리뷰를 해보겠습니다.

 

별찍기 1 ~ 4

 

 

for(let i = 1i <= 5i++){

    let sum = '';

    for(let j = 1j <= ij++){

        sum = sum + '*';

    }

    console.log(sum);

}

 

 


 

 

for(let i = 1i <= 5i++){

    let sum = '';

    for(let j = 1j <= 5 - i + 1j++){

        sum = sum + '*';

    }

    console.log(sum);

}

 

 


 

 

for(let i = 1i <= 5i++){

    let sum = '';

    for(let j = 1j <= 5 - ij++){

        sum = sum + ' ';

    }

    for(let k = 1k <= ik++){

        sum = sum + '*';

    }

    console.log(sum);

}

 

 


 

 

 

for(let i = 1i <= 5i++){

    let sum = '';

    for(let j = 1j <= i - 1j++){

        sum = sum + ' ';

    }

    for(let k = 1k <= 5 - i + 1k++){

        sum = sum + '*';

    }

    console.log(sum);

}

 

 

 

왕관찍기 - 반쪽

 

변수 select를 이용해 임의 수만큼 지정을 해주어 크기를 변경할 수 있게 하였습니다.

 

let select = 5;

 

for (let i = 1i <= selecti++) {

  let sum = "";

  for (let j = 1j <= ij++) {

    sum = sum + "*";

  }

  for (let k = 1k <= select * 2 - 1 - 2 * ik++) {

    sum = sum + " ";

  }

  if (i < select) {

    for (l = 1l <= il++) {

      sum = sum + "*";

    }

  } else {

    for (l = 1l < selectl++) {

      sum = sum + "*";

    }

  }

  console.log(sum);

}

 

 

왕관찍기 대칭

 

위의 코드를 그대로 for문을 이용하여 대칭으로 만들었습니다.

 

let select = 5;

 

for (let i = 1i <= selecti++) {

  let sum = "";

  for(let m = 1m <=2m++){

      for (let j = 1j <= ij++) {

        sum = sum + "*";

      }

      for (let k = 1k <= select * 2 - 1 - 2 * ik++) {

        sum = sum + " ";

      }

      if (i < select) {

        for (l = 1l <= il++) {

          sum = sum + "*";

        }

      } else {

        for (l = 1l < selectl++) {

          sum = sum + "*";

        }

      }

    }

    console.log(sum);

}

 

 

왕관 완성본

 

위의 왕관은 중앙이 2개로 시작하였지만, 이것이 최종 왕관!

 

차이점은 if문으로 제어를 해주어 중앙의 별이 1개로 시작하게 끔

 

두 번째 시작점을(let j = 1)  1 올려주었습니다.

 

그리고 안쪽 코드를 for문으로 2번 돌려주었습니다.

 

let select = 4;

 

for (let i = 1i <= selecti++) {

    let sum = "";

    let j = 0;

  for(let m = 0m < 2m++){

    if(j === 0){

        for (let j = 0j < ij++) {

        sum = sum + "*";

        }

    } else if(j > 0){

        for (let j = 1j < ij++) {

        sum = sum + "*";

        }

    }

    j += 1;

    

    for (let k = 1k <= select * 2 - 1 - 2 * ik++) {

        sum = sum + " ";

    }

    if (i < select) {

        for (l = 1l <= il++) {

        sum = sum + "*";

        }

    } else {

        for (l = 1l < selectl++) {

        sum = sum + "*";

        }

    }

}

  console.log(sum);

}

 

 

왕관을 배열에 담기

 

왕관을 배열에 담아보았습니다.

 

부모와 자식 배열을 만들어 push() 함수를 이용하여 담아냈습니다.

 

push() 함수는 값을 추가하는 함수입니다.

 

밑에 코드에서

 

arr.push('*'); 는 arr배열 안에 문자열 *를 추가

 

array.push(arr); 는 array배열 안에 arr이라는 변수에 담긴 배열을 추가

 

let select = 4;

const array = [];

 

for (let i = 1i <= selecti++) {

    const arr = [];

    let j = 0;

  for(let m = 0m < 2m++){

    if(j === 0){

        for (let j = 0j < ij++) {

        arr.push('*');

        }

    } else if(j > 0){

        for (let j = 1j < ij++) {

        arr.push('*');

        }

    }

    j += 1;

    

    for (let k = 1k <= select * 2 - 1 - 2 * ik++) {

        arr.push(' ');

    }

    if (i < select) {

        for (l = 1l <= il++) {

        arr.push('*');

        }

    } else {

        for (l = 1l < selectl++) {

        arr.push('*');

        }

    }

}

  array.push(arr);

  console.log(array);

}

 

Comments