Rami's 개발기록

[별 찍기] for문을 이용한 다양한 별 찍기 본문

개발기록/java

[별 찍기] for문을 이용한 다양한 별 찍기

ramrami 2021. 6. 11. 09:22

자바를 배울 때 맨 처음 HelloWrold를 출력해보듯이

for문을 배우면 항상 빠지지 않는 별 찍기를 해보려고 한다.

기초적인 문제지만 막상 해보려고 하면 은근히 헷갈려

고민하게 되기 때문에 기록해보고자 한다.

 

[반복문] while, do-while, for문

반복문에는 while, do-while, for문이 있다. 일반적으로 for문은 반복 횟수가 정해져 있을 때 사용하고 while문과 do-while문은 조건식이 참인 경우에 계속 반복할 때 사용한다. 하지만 조건식을 어떻게 세

public-void.tistory.com


 

★    
★★   
★★★  
★★★★ 
★★★★★
★★★★★
★★★★ 
★★★  
★★   
★    
    ★
   ★★
  ★★★
 ★★★★
★★★★★
★★★★★
 ★★★★
  ★★★
   ★★
    ★
    ★    
   ★★★   
  ★★★★★  
 ★★★★★★★ 
★★★★★★★★★
★★★★★★★★★
 ★★★★★★★ 
  ★★★★★  
   ★★★   
    ★    

 

이렇게 6가지 유형의 별 찍기를 해볼 것이다.


별 찍기의 기본원리를 1번 유형을 기준으로 설명해보자면

별 찍기는 이중 for문으로 구현되는데

 

  1열
2열
3열
4열
5열
1행
       
2행
     
3행
   
4행
   
5행

 

i 행으로 들어가서 j 열만큼 (별이 찍혀야 하는 열만큼) 반복한다.

쉽게 말하면 외부 for문은 별을 몇 줄 출력할지,

내부 for문은 별을 몇 개 출력할지 라고 생각하면 될 것 같다.

 

for (int i = 0; i < 5; i++) { // 행
  for (int j = 0; j < i+1; j++) { // 열
  // i가 0일 때 j가 1 (1행일 때 ★ 1개)
  // i가 1일 때 j가 2 (2행일 때 ★ 2개) ...
  // 이런식으로 진행되기 때문에 조건이 j < i+1 이렇게 된다.
  	System.out.print("★");
  }
  System.out.println(); // 한 줄 출력 후 줄바꿈
}

 

②번 별 찍기

★★★★★
★★★★
★★★
★★
for (int i = 0; i < 5; i++) {
  for (int j = 5; j > i; j--) {
  // i가 0일 때 j가 5 (1행일 때 ★ 5개)
  // i가 1일 때 j가 4 (2행일 때 ★ 4개) ...
  // 이런식으로 진행되기 때문에 조건이 j는 5부터 시작해서 j > i 까지 하나씩 줄어든다.
  	System.out.print("★");
  }
  System.out.println();
}

 

③번 별 찍기

    ★
   ★★
  ★★★
 ★★★★
★★★★★
for (int i = 0; i < 5; i++) {
  for (int k = 4; k > i; k--) { // 2번 별 찍기와 동일
  	System.out.print(" "); // 공백은 'ㄱ'+한자 키 특수문자로 처리해주었다.
  } // 내부 for문은 공백을 출력하는 for문과 별을 출력하는 for문으로 구성된다.
  for (int j = 0; j < i+1; j++) { // 1번 별 찍기와 동일
  	System.out.print("★");
  }
  System.out.println();
}

 

④번 별 찍기

★★★★★
 ★★★★
  ★★★
   ★★
    ★
for (int i = 0; i < 5; i++) {
  for (int k = 0; k < i; k++) { // 0, 1, 2, 3, 4번 공백 찍기
  	System.out.print(" ");
  }
  for (int j = 5; j > i; j--) { // 2번 별 찍기와 동일
  	System.out.print("★");
  }
  System.out.println();
}

 

⑤번 별 찍기

    ★
   ★★★
  ★★★★★
 ★★★★★★★
★★★★★★★★★
int num = 1;

for (int i = 0; i < 5; i++) {
  for (int k = 4; k > i; k--) { // 3번 별 찍기와 동일
  	System.out.print(" ");
  }
  for (int j = 0; j < num; j++) { // 별이 1, 3, 5, 7, 9번 출력되어야 하므로 변수를 하나 만든다.
  	System.out.print("★");
  }
  num = num + 2; // 1, 3, 5, 7, 9번 출력될 수 있도록 변수에 2를 더해주어 계속 홀수로 만들어준다.
  System.out.println();
}

 

⑥번 별 찍기

★★★★★★★★★
 ★★★★★★★
  ★★★★★
   ★★★
    ★
int num = 9;

for (int i = 0; i < 5; i++) {
  for (int k = 0; k < i; k++) { // 4번 별 찍기와 동일
  	System.out.print(" ");
  }
  for (int j = num; j > 0; j--) { // 9, 7, 5, 3, 1번 출력되어야 하므로 줄어드는 형태의 조건이 된다.
	System.out.print("★");
  }
  num = num - 2; // 9, 7, 5, 3, 1번 출력될 수 있도록 변수에 2를 빼서 계속 홀수로 만들어준다.
  System.out.println();
}

 


프로그래밍을 배우는 중인 예비 개발자입니다.

잘못된 내용이나 고치고 싶은 부분이 있다면

지나치지 마시고 댓글로 남겨주시면

감사드리겠습니다😊

반응형
Comments