처음에 생각했던 풀이
<script>
let star = "";
let starPlus = "";
for (let i = 1; i <= 5; i++) {
i;
star += "*";
starPlus = star + "\n";
}
console.log(starPlus);
</script>
하지만 *****
이 출력되어서 자꾸 실패했다.
(시간 초과 나올까봐 덜덜 떨었다), 결과는 맞았습니다가 나왔다.
<script>
let star = "";
let starPlus = "";
for (let i = 1; i <= 5; i++) {
i;
star += "*";
console.log(star);
}
</script>
하지만 for문에 console.log는 역시 시간 초과 나올 가능성이 높아서 고치는 것이 좋을 것 같아 다른 사람들의 풀이를 참고하여 고쳐 2차 풀이를 만들었다.
결과는 맞았습니다가 나왔다. 1차에 비해 메모리, 시간 모두 감소했다.
<script>
let star = "";
let starPlus = "";
for (let i = 1; i <= 5; i++) {
i;
star += "*";
starPlus += star + "\n";
}
console.log(starPlus);
</script>
내가 실패했던 처음에 생각했던 풀이와 비슷해서 보자마자 이해가 되었다.
for문에서 가장 마지막에 실행된 star + \n
이 StarPlus에 담겨서 실패했다.
i =1일 때
star = *
starPlus = *\n
i=2일 때
star = **
starPlus = **\n
i=3일 때
star = ***
starPlus = ***\n
...
StarPlus에 별이 하나일 때부터 N개일 때까지가 누적되어서 찍히게 해야 올바른 답이 된다.
그러려면 starPlus 값도 누적시켜야해서 StarPlus+= star + '\n'
로 변경해야한다.
변경하게 되면 StarPlus 값은 다음과 같이 찍힌다.
i = 1일 때
star = *
starPlus = *\n
i = 2일 때
star = **
starPlus = *\n**\n
i = 3일 때
star = ***
starPlus = *\n**\n***\n
...
결과값이 누적값인지 아닌지 확인하는 것이 중요하다!!