today_is
[ for ] 별찍기 본문
오늘의 목표 >>
이중 for 문에 대해서 알아보자.
1) 공백과 별의 개수 변화를 확인하여 문제를 풀어야한다.
2) 각각의 for문이 어떠한 결과를 출력해야하는지를 먼저 생각해보고 문제를 풀어보자.
Quiz 01 > 해당 모양을 만들어보세요.
(단, 사이즈는 5로 지정한다. )
* * * * *
* * * *
* * *
* *
*
tip >
각 행 마다 공백과 별이 몇개씩 출력되어야하는지를 먼저 파악한다.
별찍기는 기본적으로 어떠한 규칙이 있다.
따라서 공백과 별의 개수의 변화를 찾는 것이 우선이다.
public class Star {
public static void main(String[] args) {
// 공백(고정) 별 (공백에 따라 별의 개수를 변경)
// # # # # # 0 5
// # # # # 1 4
// # # # 2 3
// # # 3 2
// # 4 1
// 규칙 >> += 1 -= 1
int size = 5;
int star = size;
int space = 0;
for (int i = 0; i < size ; i++) {
// star = size - i; // i 에 따른 별의 개수
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j < star; j++) { // 출력할 개수는 무조건 star까지
System.out.print("* ");
}
System.out.println();
star -= 1;
space += 1;
}
}
}
Quiz 02 > 이번에는 사용자에게 사이즈에 대한 입력을 받아서, 처리해보자.
입력값에 따라, 출력되는 별의 크기가 달라져야한다.
ex) 5를 입력했을때
*
**
***
****
*****
tip >
기본적으로 오른쪽 정렬하려면, 공백과 별의 개수를 알아내야한다
한 줄 단위로 공백과 별이 몇개들어가는지 먼저 파악한 후
한 줄이 끝난다면 줄바꿈을 해주자
import java.util.Scanner;
public class Star {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt(); // 사용자에게 개수를 전달받는다
for(int i = 1; i <= count; i++) {
int num = count - i;
for(int j = 0; j < num; j++) { // 5 , 4 , 3 , 2 , 1
System.out.print(" "); // 한 줄 안에서 먼저 나오는 글자의 개수
}
for (int j = 1; j < i + 1; j++) { // 0 , 1 , 2 , 3, 4
System.out.print("*"); // 한 줄 안에서 나중에 나오는 글자의 개수
}
// System.out.printf("\t%d, %d", num , i); // 개수 확인용
System.out.println(); // 한줄의 출력이 끝나면 줄을 바꾼다
}
}
}
study_review >>
공백과 별의 개수 변화를 파악했다해도, 어떻게 처리할지 막막했었는데, 각 for문이 어떠한 역할을 하는지를 먼저 생각하고 접근하고자 노력했다. for문의 구조가 어떤식으로 작동하는지를 정확히 알게된다면 별찍기는 쉽게 느껴질 것이다 !!
아직 구조에 대해 잘 모르겠다면,
표를 만들어서 개수 변화를 파악하거나, 문제 옆에 주석으로 개수 변화를 파악하는 것이 중요하다
tip >>
i 를 사용하는 for문은 전체 열을 출력하는 for문
j 를 사용하는 for문은 전체 행을 출력하는 for문
j for 문은 별과 공백을 출력한다.
-> i for 문 내부에 존재하여야함.
i for 문은 j의 출력이 끝나고 나면, 한줄띄워주는 역할을 수행한다.
-> 다음줄로 넘어가야하기 때문
'java' 카테고리의 다른 글
[ function ] (0) | 2023.12.01 |
---|---|
[ for ] 별찍기 - 심화 (0) | 2023.12.01 |
[ 프로그래머스 java ] 신규 아이디 추천 (Lv.1) (0) | 2023.11.27 |
[ String ] Luhn 알고리즘 & string 함수 (0) | 2023.11.22 |
[ loop ] for, while 반복문 (0) | 2023.11.20 |