이번 글은 연습문제 풀이입니다. 이전 글에서 연습문제를 풀어 보신 분들만 아래 내용을 확인하시길 바랍니다.
13-1 풀이
for(var i=0; i<5; i++){ var string = ""; for(var j=0; j<5-i; j++){ string = string+"*"; } console.log(string); }
전체 줄수가 5이고, i가 현재 줄의 번호이므로 각 줄당 5-i개의 별을 찍어주면 됩니다.
13-2 풀이
for(var i=0; i<5; i++){ var string = ""; for(var j=0; j<i; j++){ string = string+" "; } for(var j=0; j<5-i; j++){ string = string+"*"; } console.log(string); }
첫째줄에는 빈칸이 0칸, 별이 5칸, 둘째 줄에는 빈칸이 1칸, 별이 4칸 ... 즉 빈칸을 줄 번호-1(j<=i-1이 되고, 이것은 j<i와 같죠)만큼 먼저 찍어 준 다음, 별을 줄 번호의 반대로 찍어주면 되겠죠.
위 풀이에서는 for문 안에 2개의 for문을 사용했는데, 하나만 사용할 수도 있습니다.
for(var i=0; i<5; i++){ var string = ""; for(var j=0; j<5; j++){ if(j<i){ string = string+" "; } else { string = string+"*"; } } console.log(string); }
별찍기 예제를 처음 보시는 분들은 쉽게 이해가 잘 안되실 텐데, 노트에 i와 j의 값을 기록해 가면서 차근차근 코드를 따라 반목문을 진행해 봅시다. 저도 반복문 처음 배우고 별찍기 예제 처음 풀 때 몇 시간씩 걸려서 이해하려고 했었습니다. 결코 쉬운 예제가 아니므로 시간을 두고 이해하도록 합시다.
13-3 풀이
이 문제는 못풀어도 괜찮습니다. 참고만 하고 넘어가신 후 나중에 다시 도전해 보세요.
for(var i=0; i<5; i++){ var string = ""; for(var j=0; j<5; j++){ if(j<5-i){ string = string+"*"; } else{ string = string+" "; } } for(var j=0; j<5; j++){ if(j>=i){ string = string+"*"; } else{ string = string+" "; } } console.log(string); }
왼쪽 반쪽을 그리는 조건과, 오른쪽 반쪽을 그리는 조건을 따로 나누어서 코딩한 모습입니다.
이걸 합치면 아래와 같이 됩니다.
for(var i=0; i<5; i++){ var string = ""; for(var j=0; j<10; j++){ if(j<5&&j<5-i || j>=5&&j-5>=i){ string = string+"*"; } else{ string = string+" "; } } console.log(string); }
왼쪽 반쪽(j가 5보다 작은 경우)와 오른쪽 반쪽(j가 5와 같거나 큰 경우)을 합쳤습니다. 오른쪽 반쪽은 j값이 5부터 10까지이므로 조건에 사용되는 j에 5를 빼줍니다.
'프로그래밍 입문' 카테고리의 다른 글
자바스크립트로 프로그래밍 입문 16. 변수2-지역변수, 전역변수, 스코프 (0) | 2018.11.07 |
---|---|
자바스크립트로 프로그래밍 입문 14. HTML, 파일로 저장하기 (0) | 2018.11.03 |
[자바스크립트 연습문제] 13 별찍기 예제 (0) | 2018.10.27 |
자바스크립트로 프로그래밍 입문 13. 반복문(Loop Statement) 2 - for, continue, break, (0) | 2018.10.25 |
[자바스크립트 연습문제] 12-1 풀이 (0) | 2018.10.24 |