(1).백준 2448번 별 찍기 - 11는 재귀를 사용해서 별 모양을 찍어내는 문제였다.

 

예전 종이접기 같은 재귀에서도 사용했었지만 최근에 재귀를 사용할 일이 없어서 살짝 당황했는데

3, 6, 12 패턴을 확인해보면서 일단 제일 작은 단위인 3의 출력 결과를 기본 반환값으로 지정해주고

그 이후에는 바로 전단계의 별 그림을 가져오게 하는 방식으로 재귀를 호출한 다음

별의 형태가 윗줄, 아랫줄으로 구분되기 때문에

아랫줄은 두 문자열 사이에 공백 한칸을 두고 합쳐줬고

윗줄의 경우 왼쪽, 오른쪽에 공백이 들어가야 했는데 입력된 n의 절반만큼씩 증가했기 때문에

repeat을 사용해서 공백을 채워줬다.

const input = 6

const recurtion = (n) => {
    if(n == 3){
        return ['  *  ', ' * * ', '*****']
    }

    const arr = recurtion(n / 2)
    const result = []
    
    for(let i = 0 ; i < arr.length ; i++){
        result.push(' '.repeat(n / 2) + arr[i] + ' '.repeat(n / 2))
    }
    
    for(let i = 0 ; i < arr.length ; i++){
        result.push(arr[i] + ' ' + arr[i])
    }
    
    return result
}

console.log(recurtion(input).join('\n'))

'회고' 카테고리의 다른 글

[개발일지] - 477  (0) 2024.10.22
[개발일지] - 476  (0) 2024.10.21
[개발일지] - 474(주말)  (0) 2024.10.19
[개발일지] - 473  (0) 2024.10.18
[개발일지] - 472  (0) 2024.10.17

+ Recent posts