반응형

반복문을 사용하여 많이 연습하는 예제 중 하나인

별 찍기에 대해서 연습해보려 한다.

 

1. 별찍기 기본

*

**

***

****

*****

위 형태의 별 모양은 반복문을 돌려서 출력할 수 있다.

for (var i = 1; i <= 5; i++){  // 별 개수의 초기값 1; 최대 별 개수 5; 별개수는 1씩증가
   console.log("*".repeat(i)); // 문자열.repeat(n)이라는 함수로 문자열을 n번 만큼 반복할 수 있다.
}

 

또한 반대 모양인

*****

****

***

**

*

의 모양도 앞서 사용한 반복문을 응용해서 만들 수 있다.

for (var i = 5; i >= 1; i--){  // 별 개수의 초기값 5; 별 개수 최소값 1; 별개수는 1씩감소
   console.log("*".repeat(i));
}

 

2. 별찍기 응용

이제 별이 왼쪽에 붙는 형태가 아닌

오른쪽에 붙여서 별을 표현할 수 있다.

   

for(var i = 1; i <=5; i++){
   console.log(" ".repeat(5 - i) + "*".repeat(i)); 
}

// " "의 공백을 repeat()시켜줘서 별모양 앞에 여백을 준다.
// 이 때, 여백의 칸 수는 별의 수와는 다르게
// 4 -> 3 -> 2 -> 1 로 줄어들기 때문에 5 - i 를 적용시켜주었다.

반대의 경우

for(var i = 5; i >= 1; i--){
   console.log(" ".repeat(5 - i) + "*".repeat(i)); 
}

// 공백이 0 -> 1 -> 2 -> 3 -> 4 의 순서로 추가되기 때문에
// i 값이 5로 바뀐 상황에서 5 - i로 적용한다.

 

3. 별찍기 심화

이제 한 쪽으로 치우친 별이 아닌,

트리 형태, 거꾸로 된 트리 형태를 만들어 볼 것이다.

 

    *  

   ***

  *****

 *******

*********

for (var i = 1; i <= 9; i = i+2){  // 별의 최대 개수 9개; 별의 개수는 1-3-5-7-9로 2개씩 증가
   console.log(" ".repeat((9-i)/2) + "*".repeat(i))
}

// 공백의 수는 4 -> 3 -> 2 -> 1 로
// (9-i)/2 를 적용해준다.

 

거꾸로 된 트리 형태로는 아래의 소스를 적용할 수 있다.

for (var i = 9; i >= 1; i = i-+2){  // 별의 최대 개수 9개; 별의 개수는 1-3-5-7-9로 2개씩 증가
   console.log(" ".repeat((9-i)/2) + "*".repeat(i))
}

 

 

이 처럼 반복문을 사용해서 원하는 모양을 만들 수 있다.

 

 

 

반응형

+ Recent posts