역삼각형 출력하기 (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
!! 이 문제에 가장 어울리는 메서드인듯하다. 재귀함수로 반복출력
적재적소에 메서드를 사용할 수 있도록 익숙해져야겠다