[백준 2438 node.js] 별찍기1

Jessie H·2022년 6월 12일
0

알고리즘 공부

목록 보기
8/20

백준 2438 별찍기 1

처음에 생각했던 풀이

<script>
let star = "";
let starPlus = "";
for (let i = 1; i <= 5; i++) {
  i;
  star += "*";
  starPlus = star + "\n";
}
console.log(starPlus);
</script>

하지만 *****이 출력되어서 자꾸 실패했다.




풀이

1차 풀이

(시간 초과 나올까봐 덜덜 떨었다), 결과는 맞았습니다가 나왔다.

<script>
let star = "";
let starPlus = "";
for (let i = 1; i <= 5; i++) {
  i;
  star += "*";
  console.log(star);
}
</script>

하지만 for문에 console.log는 역시 시간 초과 나올 가능성이 높아서 고치는 것이 좋을 것 같아 다른 사람들의 풀이를 참고하여 고쳐 2차 풀이를 만들었다.


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

...

결과값이 누적값인지 아닌지 확인하는 것이 중요하다!!

profile
코딩 공부 기록장

0개의 댓글