코드 그라데이션
JAVA 별찍기 (3) 직각삼각형 모양 (2) 본문
출력해야 하는 모양
브레인스토밍
- 공백도 문자일 수 있다는 idea!
- 공백은 (" ") 이 모양으로 찍어주면 된다.
- 공백 4개 찍고 별 / 공백 3개 찍고 별별 / ... 이렇게 지금 반복 되고 있어.
- 그러면, 공백을 찍는 for문과 / 별을 찍는 for문을 각각 만들어서 출력해주면 된다.
** 지금 변하는 값은? 공백의 수와 별의 수.
1. 첫번째 줄 : 공백 4개 / 별 1개
for(int i = 0; i<4; i++) {
System.out.print(" "); // 공백 네 개
}
for(int j = 0; j<1; j++) {
System.out.print("*"); // 별 한 개
}
System.out.println();
2. 두 번째 줄 : 공백 3개 / 별 2개
for(int i = 0; i<3; i++) {
System.out.print(" "); // 공백 세 개
}
for(int j = 0; j<2; j++) {
System.out.print("*"); // 별 두 개
}
System.out.println();
3. 세 번째 줄 : 공백 2개 / 별 3개
for(int i = 0; i<2; i++) {
System.out.print(" "); // 공백 두 개
}
for(int j = 0; j<3; j++) {
System.out.print("*"); // 별 세 개
}
System.out.println();
4. 네 번째 줄 : 공백 1개 / 별 4개
for(int i = 0; i<1; i++) {
System.out.print(" "); // 공백 한 개
}
for(int j = 0; j<4; j++) {
System.out.print("*"); // 별 네 개
}
System.out.println();
5. 다섯번째 줄 : 공백 0 / 별 5개
for(int i = 0; i<0; i++) {
System.out.print(" "); // 공백 제로
}
for(int j = 0; j<5; j++) {
System.out.print("*"); // 별 다섯 개
}
System.out.println();
그러면...
규칙성을 찾기 위해 일단 변하는 값을 각각 x와 y로 치환해서 식을 만들어본다.
for (int k = 0; k<5; k++) {
// 변하는 값을 일단 x와 y로 치환해서 기다리고 있다.
for(int i = 0; i<x; i++) {
System.out.print(" ");
}
for(int j = 0; j<y; j++) {
System.out.print("*");
}
}
고민 시작.
x를 k에 관한 식으로 변환이 가능한가? : 규칙성 찾기
( x = k...)
k 0 1 2 3 4
x 4 3 2 1 0
4 = 4-0 / 3 = 4-1 / 2 = 4- 2 / 1 = 4-3 / 0 = 4-4 형태로 만들 수 있다.
도출한 식은
x = 4 - k (현재 5행을 출력하므로)
다음으로
y를 k에 관한 식으로 변환이 가능한가? : 규칙성 찾기
( y = k...)
k 0 1 2 3 4
y 1 2 3 4 5
// 1 = 0+1 / 2 = 1+1 / 3 = 2+1 / 4 = 3+1 / 5 = 4+1
도출한 식은
y = k + 1
따라서
치환까지 완료한 중첩 for문은...!
for (int k = 0; k<5; k++) {
// 변하는 값을 일단 x와 y로 치환해서 기다리고 있다.
for(int i = 0; i<N-1-k; i++) { // N을 그냥 5로 적으면, i<4-k 라고 표현 가능
System.out.print(" "); // 공백 개수
}
for(int j = 0; j<k+1; j++) {
System.out.print("*"); // 별 개수
}
System.out.println(); // 줄바꿈이 필요하다.
}
전체 코드
// 3. 역직삼각형
public class Star03P {
public static void main(String[] args) {
int N = 5; // 가독성을 위해 변수로 대체
for (int k = 0; k<5; k++) {
for(int i = 0; i<N-1-k; i++) { // N을 그냥 5로 적으면, i<4-k 라고 표현 가능
System.out.print(" "); // 공백 개수
}
for(int j = 0; j<k+1; j++) {
System.out.print("*"); // 별 개수
}
System.out.println();
}
}
}
728x90
'Java > 간단한 Quiz' 카테고리의 다른 글
JAVA 별찍기 (5) 마름모(다이아몬드) 모양 (0) | 2023.03.23 |
---|---|
JAVA 별찍기 (4) 피라미드 모양 (0) | 2023.03.23 |
JAVA 별찍기 (2) 직각삼각형 모양 (0) | 2023.03.22 |
JAVA 별찍기 (1) 사각형 모양 (0) | 2023.03.22 |
별찍기 피라미드 질문(chat GPT 답변) (0) | 2023.03.21 |
Comments