역삼각형 출력하기 (Level 1)

문제

printReversedTriangle 메소드는 양의 정수 num을 매개변수로 입력받습니다.

다음을 참고해 *(별)로 높이가 num인 삼각형을 문자열로 리턴하는 printReversedTriangle 메소드를 완성하세요

높이(num)가 3일때 다음과 같은 문자열을 리턴하면 됩니다.

***
**
*

풀이

function printReversedTriangle(num) {
  let result = "";
  for ( let i = num; i > 0; i-- ) {
    for ( let j = 0; j < i; j++ ) {
          result += "*"
    }
    result += "\n"
  }
  return result
}

좀 다른 방법을 떠올리려 했는데 이 방법밖에 생각이 나지 않았다..

매우 안좋은 코드인건 분명하다

다른 사람의 풀이

좋은 방법이 두가지나 있어 둘다 가져왔다.

function printReversedTriangle(num) {
  var result = ''

  while(num>0){result+=Array(num+1).join("*")+'\n';num--}

  return result
}

생각치도 못한 방법이다.

join은 그냥 배열을 문자열로 바꿀때 쓴다고만 생각했는데,

빈 배열을 만들고 그 원소를 *로 잇는다는 생각은 매우 신박하며 응용해보려 해야겠다.

function printReversedTriangle(num) {
  return '*'.repeat(num) + (num && '\n' + printReversedTriangle(num - 1) || '');
}

repeat!! 이 문제에 가장 어울리는 메서드인듯하다. 재귀함수로 반복출력

적재적소에 메서드를 사용할 수 있도록 익숙해져야겠다

+ Recent posts