별을 찍어 트리를 만들어보자.
항상 헷갈리는 별찍기 문제를 완전 정복하자.
for(let i = 0; i < 5; i++) { for(let j = 0; j < 5; j++) { document.write('*'); } document.write('<br>'); }
위 코드를 출력하면 정사각형 별이 찍힌다.
첫 번째 for문은 전체 행의 개수를 결정한다. 0부터 5미만까지이면, 총 5개의 행을 표현한다.
두 번째 for문은 각 행에 찍고 싶은 별의 개수를 결정한다. 즉 열의 개수이다.
for(let i = 0; i < 5; i++) { for(let j = 0; j <= i; j++) { document.write('*'); } document.write('<br>'); }
정사각형을 찍는 식에서 열에 찍히는 별의 개수를 생각해보자.
1) 5개의 행을 만든다.i < 5
2) 각 행에 행의 번호만큼 찍히도록 한다j < i
for (let i = 0; i < 5; i++) { for (let j = 4; j > i; j--) { document.write(" "); } // 공백 표기 for (let j = 0; j <= i; j++) { document.write("*"); // 별 표기 } document.write("<br>"); }
1) 5개의 행을 만든다.
i < 5
2) 1행에 4개의 공백 후 별1개, 2행에 3개의 공백 후 별 2개...
3) 외부 for문 내에 2개의 내부 for문으로 공백과 별을 각각 표기했다.
for (let i = 0; i < 5; i++) { for (let j = 5; j > i; j--) { document.write("*"); } document.write("<br>"); }
1) 5개의 행을 만든다.
i < 5
2) 1행에 5개의 별(열), 2행에 4개의 별(열)... (i의 수를 이용하면 된다)
for (let i = 0; i < 5; i++) { for (let j = 0; j < i; j++) { document.write(" "); } for (let k = 5; k > i; k--) { document.write("*"); } document.write("<br>"); }
1) 5개의 행을 만든다.
i < 5
2) 1행에 0개의 공백+1개의 별. 2행에 1개의 공백+4개의 별...
3) 외부 for문 내에 2개의 내부 for문으로 공백과 별을 각각 표기했다.
for (let i = 0; i < 5; i++) { for (let j = 0; j < 4 - i; j++) { document.write(" "); // 각 행의 공백 표기 } for (let k = 0; k < 2 * i + 1; k++) { document.write("*"); // 각 행의 홀수개의 만큼 별 표기 } document.write("<br>"); }
1) 5개의 행을 만든다.
i < 5
2) 1행에 4개의 공백+1개의 별. 2행에 3개의 공백+3개의 별. 3행에 2개의 공백+5개의 별...
3) 외부 for문 내에 2개의 내부 for문으로 공백과 별을 각각 표기했다.
for (let i = 0; i < 5; i++) { //4줄 출력 for (let j = 1; j <= i; j++) { document.write(" "); } for (let j = 9; j >= i * 2 + 1; j--) { document.write("*"); } document.write("<br>"); }
1) 5개의 행을 만든다.
i < 5
2) 1행에 0개의 공백+9개의 별. 2행에 1개의 공백+7개의 별. 3행에 3개의 공백+5개의 별...
3) 외부 for문 내에 2개의 내부 for문으로 공백과 별을 각각 표기했다.