✅ 문제

공백' '이 포함된 별찍기
✅ 코드
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 5; i++) {
// 공백 출력
for (int j = 0; j < 4 - i; j++) {
System.out.print(" ");
}
// 별표 출력
for (int k = 0; k <= i; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
✅ 추론 과정
i=0 | j | j | j | j | ★ | j=4, k=1 |
i=1 | j | j | j | ★ | ★ | j=3, k=2 |
i=2 | j | j | ★ | ★ | ★ | j=2, k=3 |
i=3 | j | ★ | ★ | ★ | ★ | j=1, k=4 |
i=4 | ★ | ★ | ★ | ★ | ★ | j=0, k=5 |
i (행 수=줄 수) |
0 | 1 | 2 | 3 | 4 | i < 5 or i <= 4 |
j (공백 개수) |
4 | 3 | 2 | 1 | 0 | j < 4-i |
k (별 개수) |
1 | 2 | 3 | 4 | 5 | k < i+1 or k <= i |
바깥쪽 반복문 (for문의 첫 번째 반복문)은 행을 나타낸다. i 변수가 행의 인덱스이다. 이 반복문은 0에서 4까지 실행되기 때문에 총 5번 반복되고, 5줄을 출력한다는 뜻이다.
안쪽 반복문 (for문의 두 번째 반복문)은 각 행마다 해당 행에 출력할 공백을 나타낸다. 그래서 j 변수가 해당 행에 출력할 공백의 개수를 나타낸다. j 값은 4 - i로 계산된다. 왜냐하면 i가 증가함에 따라 출력할 공백의 개수가 감소해야 하기 때문이다. 따라서 4 - i는 첫 번째 행에 4개의 공백, 두 번째 행에 3개의 공백, 세 번째 행에 2개의 공백, 네 번째 행에 1개의 공백, 다섯 번째 행에는 공백이 없음을 뜻한다.
다음으로, 두 번째 반복문 이후에 오는 또 다른 반복문은 별표를 출력한다. 이 반복문은 i 값에 따라 해당 행에 출력할 별표의 개수를 결정한다. k 변수가 해당 행에 출력할 별표의 개수를 나타낸다. 이 반복문은 0에서 i까지 실행되며, 따라서 첫 번째 행에는 1개의 별표, 두 번째 행에는 2개의 별표, 세 번째 행에는 3개의 별표, 네 번째 행에는 4개의 별표, 다섯 번째 행에는 5개의 별표를 출력하게 된다.
i: 바깥쪽 반복문에서 현재 행의 인덱스
j: 안쪽 반복문에서 현재 행에 출력할 공백의 개수
k: 안쪽 반복문에서 현재 행에 출력할 별표의 개수
각 변수의 숫자 변화
i (바깥쪽 반복문의 변수):
i는 0부터 시작하여 1씩 증가
따라서 i의 값은 0, 1, 2, 3, 4
j (안쪽 반복문의 변수):
j는 4 - i로 계산
i가 0일 때, j는 4 (첫 번째 행에 출력할 공백의 개수)
i가 1일 때, j는 3 (두 번째 행에 출력할 공백의 개수)
i가 2일 때, j는 2 (세 번째 행에 출력할 공백의 개수)
i가 3일 때, j는 1 (네 번째 행에 출력할 공백의 개수)
i가 4일 때, j는 0 (다섯 번째 행에 출력할 공백의 개수)
k (안쪽 반복문의 변수):
k는 0부터 시작하여 i까지 1씩 증가
첫 번째 행에는 k의 값이 1개, 두 번째 행에는 2개, 세 번째 행에는 3개, 네 번째 행에는 4개,
다섯 번째 행에는 5개의 별표 출력
별찍기가 어려운 초보자들은 반드시 별의 갯수나 공백의 갯수 변화를 손으로 써보면서 변수가 어떻게 달라지는 지, 코드가 어떻게 흘러가는 지 파악 해 보는 것이 중요하다. 공백을 -로 바꿔서 출력해보는 것도 좋은 방법이다. 가독성 있게 출력문을 확인할 수 있기 때문이다.
'Algorithm > JavaFestival' 카테고리의 다른 글
[자바페스티벌] 24번 - N과 X를 입력 받아 X보다 작은 수만 출력 (0) | 2024.03.28 |
---|---|
[자바페스티벌] 23번 - 2차원 배열을 왼쪽으로 90도 회전하여 출력하기 (0) | 2024.03.28 |
[자바페스티벌] 21번 - 1차원 배열에서 두 개의 숫자를 뽑아 거리 비교하기 (0) | 2024.03.27 |
[자바페스티벌] 20번 - 10진수 정수를 입력받아 2진수로 변환해서 출력하기 (0) | 2024.03.26 |
[자바페스티벌] 19번 - 단 수와 곱해지길 원하는 수 입력받아 구구단 출력하기 (0) | 2024.03.26 |
✅ 문제

공백' '이 포함된 별찍기
✅ 코드
public class Main { public static void main(String[] args) { for (int i = 0; i < 5; i++) { // 공백 출력 for (int j = 0; j < 4 - i; j++) { System.out.print(" "); } // 별표 출력 for (int k = 0; k <= i; k++) { System.out.print("*"); } System.out.println(); } } }
✅ 추론 과정
i=0 | j | j | j | j | ★ | j=4, k=1 |
i=1 | j | j | j | ★ | ★ | j=3, k=2 |
i=2 | j | j | ★ | ★ | ★ | j=2, k=3 |
i=3 | j | ★ | ★ | ★ | ★ | j=1, k=4 |
i=4 | ★ | ★ | ★ | ★ | ★ | j=0, k=5 |
i (행 수=줄 수) |
0 | 1 | 2 | 3 | 4 | i < 5 or i <= 4 |
j (공백 개수) |
4 | 3 | 2 | 1 | 0 | j < 4-i |
k (별 개수) |
1 | 2 | 3 | 4 | 5 | k < i+1 or k <= i |
바깥쪽 반복문 (for문의 첫 번째 반복문)은 행을 나타낸다. i 변수가 행의 인덱스이다. 이 반복문은 0에서 4까지 실행되기 때문에 총 5번 반복되고, 5줄을 출력한다는 뜻이다.
안쪽 반복문 (for문의 두 번째 반복문)은 각 행마다 해당 행에 출력할 공백을 나타낸다. 그래서 j 변수가 해당 행에 출력할 공백의 개수를 나타낸다. j 값은 4 - i로 계산된다. 왜냐하면 i가 증가함에 따라 출력할 공백의 개수가 감소해야 하기 때문이다. 따라서 4 - i는 첫 번째 행에 4개의 공백, 두 번째 행에 3개의 공백, 세 번째 행에 2개의 공백, 네 번째 행에 1개의 공백, 다섯 번째 행에는 공백이 없음을 뜻한다.
다음으로, 두 번째 반복문 이후에 오는 또 다른 반복문은 별표를 출력한다. 이 반복문은 i 값에 따라 해당 행에 출력할 별표의 개수를 결정한다. k 변수가 해당 행에 출력할 별표의 개수를 나타낸다. 이 반복문은 0에서 i까지 실행되며, 따라서 첫 번째 행에는 1개의 별표, 두 번째 행에는 2개의 별표, 세 번째 행에는 3개의 별표, 네 번째 행에는 4개의 별표, 다섯 번째 행에는 5개의 별표를 출력하게 된다.
i: 바깥쪽 반복문에서 현재 행의 인덱스
j: 안쪽 반복문에서 현재 행에 출력할 공백의 개수
k: 안쪽 반복문에서 현재 행에 출력할 별표의 개수
각 변수의 숫자 변화
i (바깥쪽 반복문의 변수):
i는 0부터 시작하여 1씩 증가
따라서 i의 값은 0, 1, 2, 3, 4
j (안쪽 반복문의 변수):
j는 4 - i로 계산
i가 0일 때, j는 4 (첫 번째 행에 출력할 공백의 개수)
i가 1일 때, j는 3 (두 번째 행에 출력할 공백의 개수)
i가 2일 때, j는 2 (세 번째 행에 출력할 공백의 개수)
i가 3일 때, j는 1 (네 번째 행에 출력할 공백의 개수)
i가 4일 때, j는 0 (다섯 번째 행에 출력할 공백의 개수)
k (안쪽 반복문의 변수):
k는 0부터 시작하여 i까지 1씩 증가
첫 번째 행에는 k의 값이 1개, 두 번째 행에는 2개, 세 번째 행에는 3개, 네 번째 행에는 4개,
다섯 번째 행에는 5개의 별표 출력
별찍기가 어려운 초보자들은 반드시 별의 갯수나 공백의 갯수 변화를 손으로 써보면서 변수가 어떻게 달라지는 지, 코드가 어떻게 흘러가는 지 파악 해 보는 것이 중요하다. 공백을 -로 바꿔서 출력해보는 것도 좋은 방법이다. 가독성 있게 출력문을 확인할 수 있기 때문이다.
'Algorithm > JavaFestival' 카테고리의 다른 글
[자바페스티벌] 24번 - N과 X를 입력 받아 X보다 작은 수만 출력 (0) | 2024.03.28 |
---|---|
[자바페스티벌] 23번 - 2차원 배열을 왼쪽으로 90도 회전하여 출력하기 (0) | 2024.03.28 |
[자바페스티벌] 21번 - 1차원 배열에서 두 개의 숫자를 뽑아 거리 비교하기 (0) | 2024.03.27 |
[자바페스티벌] 20번 - 10진수 정수를 입력받아 2진수로 변환해서 출력하기 (0) | 2024.03.26 |
[자바페스티벌] 19번 - 단 수와 곱해지길 원하는 수 입력받아 구구단 출력하기 (0) | 2024.03.26 |