학습목표: 중첩 for문을 이해한다.
1.
별을 보면 횟수가 거듭될수록1.공백의 갯수는 작아진다. 2. 별의 갯수는 늘어난다는 법칙을 알 수 있다. 이 두 법칙을 코드로 옮기는 게 별을 찍는데 관건이 되겠다.
문제를 간단히 보기위해 세로를 'i'로 가로를 'j'로 놔두자. 그러면 i의 수가 증가할수록 j의 공백은 감소하고 별은 증가하는 걸 알 수 있다. 이를 코드로 나타낸다면 아래와 같다. 코드를 보면 바깥쪽 for문이 실행되면 안쪽의 for문은 조건에 따라 공백을 쓰기도 별을 찍기도 한다. 여기서 포인트는 안의 for문에서 '조건이 변하는 때'인데 조건을 보면 i의 값이 j의 값보다 커질 때 조건이 변화되는 걸 알 수 있다.
i가 1일때 j는 i와 같아지는 1에서 변화가 생기고 i가 2일 때 j가 2이면 변화가 생긴다. 즉 i의 값과 j의 값이 같아질 때 변화가 생긴다. 여기서 변화는 공백을 찍다가 별을 찍는 변화다. 이를 그림으로 표현하면 다음과 같다. 이번 별찍기의 핵심은 조건의 변화와 공백을 어떻게 표현하는가이다. 공백의 표현을 큰 수부터 차례로 작아지게 만드는 방법을 쓴 게 흥미롭다.
2.
위의 별찍기와 모양은 똑같지만 반대의 방향의 별이다. 위의 별 찍기를 수행할 수 있다면 다음 별찍기는 더 수월하게 풀 수 있다. 앞의 방법과 같이 별의 모양을 i와 j로 표현해보면 i와 j의 수가 같아질 때 까지 별이 찍히는 걸 알 수 있다. 이를 코드로 표현해본다면 아래와 같다. i와 j의 수가 같아지기 전까지 별을 찍는 수식을 표현한게 흥미롭다.
3.피라미드형 별찍기
공백은 1칸씩 줄고, 별은 2개씩 늘어나는 형태입니다.
이 점을 이용하여 i번째 줄(0부터 시작)에서 공백은 5 - i칸, 별은 2 * i + 1개가
된다는 점을 이용해서 for문을 작성할 수 있습니다.
'java > 자바의 정석 연습문제 오답노트' 카테고리의 다른 글
[조건문과 반복문] 연습문제 4-4 (0) | 2022.09.29 |
---|---|
[조건문과 반복문] 연습문제 4-2 (0) | 2022.09.28 |
[조건문과 반복문] 연습문제 4-3 (0) | 2022.09.28 |
[배열] 연습문제 5-5 (0) | 2022.08.28 |
[배열] 2차원 배열의 총합 / 평균 구하기 (0) | 2022.08.27 |