ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JavaScript 입문 : 반복문 활용 (2) - 별찍기 응용
    컴퓨터 알아가기/JavaScript 2021. 12. 22. 19:30
    728x90
    반응형

    이 글은 제로초 TV의 자바스크립트 강좌를 기본으로 하고 있습니다. 

     

    지난시간에 이어 중첩문 활용에 대한 예제를 풀어 보겠습니다. 

     

    1. 1, 3, 5, 7, 9 규칙 만들기

     

    우선 console.log에 1, 3, 5, 7, 9 홀수가 나오게 만들어 봅시다. (이전 시간에 continue를 사용하여 만들었습니다.)

     

    이게 숫자가 아닌 도형으로 다음과 같이 나오게 하려면 어떻게 할까요? 이제부터 다양한 중첩문을 활용하여 다음 그림을 만들어 볼겁니다. 

     

    ▒ 다양한 중첩문 (벌찍기 응용)

     

    다음 5가지 예제를 풀어보고자 합니다. 이 부분을 풀어내면 좀 더 응용한 어려운 문제도 풀수 있을 것 같습니다. 

    ①번 문제는 1, 3, 5, 7, 9로 늘어나는 문제입니다. 맨 위에서 연습했던 홀수가 나오는 로직에서 문자열 'e'를 repeat()함수로 반복시키면 됩니다. 다음과 같이 나타낼 수 있습니다. 

     

    ②번 문제는 이와 반대입니다. 원래는 10부터 내려오면 되는데 i=0을 기준으로도 해보는 훈련이 필요합니다. 우선 10부터 내려오는 코딩은 다음과 같이 하면 간단합니다. 

    그럼 i=0 기준으로 할 수 있을까요? 구칙을 찾으면 쉽습니다. 즉,

     

    i가 홀수만 나타내는 식이므로 i = 1일 경우 console.log는 9, i=3일 경우 console.log는 7...... i=9일 경우 console.log는 1입니다. 이는 합치면 모두 10이 되는 경우로 10-i를 하면 console.log의 값이 나옵니다. 다음과 같이 나타낼 수 있겠죠.

     

    ③번의 경우는 띄어쓰기(space)를 나타내는 ' '와 repeat()함수를 적용해야 합니다. 예를 들어 앞의 2칸을 띄고 e를 3개 나타내는 명령어는 다음과 같습니다. 

    그럼 예제처럼 5, 4, 3, 2, 1로 내려오는 경우를 나타내려고 하면 repeat(  )함수의 규칙을 찾으면 될 것 같습니다. 우선 초보인 어로서는 5, 4, 3, 2, 1을 나타내 보고 거기서 규칙을 찾는게 순서일 듯 합니다. 숫자는 다음과 같이 나타낼 수 있습니다. 

    이 원리를 이용해 보겠습니다. 

    ④번의 경우는 이 반대로 생각하면 되겠습니다. 공간이 4, 3, 2, 1, 1순으로 내려가는 원리를 찾으면 됩니다. 머리속으로 생각하지 마시고 꼭 종이위에 그리면서 하는게 이해가 쉽네요.

    다음과 같이 하면 됩니다. 

     

    ⑤번의 나무 윗부분 (트리) 모양을 생각해 봅니다. 규칙을 찾기 위해 손으로 그려보는게 제일 좋은데 일단 다음과 같이 생각하면 정말 답이 안나옵니다.  

    틀린생각

    잘못된 방식으로 반복문을 돌리면 RangeError가 나옵니다. 뒷 부분에 대한 Range를 줄 수 없네요.  

    그럼 어떤 기준으로 생각하느냐 무조건 왼쪽기준으로 봅니다. 즉, 공간은 2, 1, 0으로 줄어들고 e는 1,3,5로 증가하는 규칙을 적용하면 됩니다

    바른생각

    공간대신에 '&'을 넣어 이해를 해 보겠습니다. 

    'e'가 1, 3, 5로 repeat 되기 위해서는 i+2가 최종 되어야 합니다. 공간인 '&'이 2, 1, 0이 되기 위해서는 1이 2가 되고 3이 1이 되기 위하여 최대수 5에서 2로 나누어주는 규칙을 찾아내야 합니다. 

    이제 '&'기호는 '  '로 바꾸어 다시 진행하면 아래와 같이 나옵니다. 

    머리 아픕니다. 

     

    이제 천천히 시간을 가지고 다음 숙제를 풀도록 하지요. 며칠이 걸릴지는 모르겠지만 해 보면서 답이 나오면 그때 그때 달도록 하겠습니다. 

     

    숙제는 마름모와 토끼입니다. 

     

     

     

    반응형

    댓글

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Designed by Tistory.