다이아몬드 패턴 생성하기

문제


다이아몬드 패턴을 생성하는 프로그램을 작성하시오.

n을 입력받으면 *로 다이아몬드 패턴을 완성하세요

 

예시


const test_case = 2

// 출력
 *
***
 *

 

 

풀이


function generateDiamondPattern(n) {
    const result = new Array(2 * n - 1);
    for (let i = n - 1; i >= 0; i--) {
        const start = n - i - 1;
        const end = n + i - 1;
        const blank = ' '.repeat(i);
        const star = '*'.repeat(2 * start + 1);
        result[start] = blank + star;
        result[end] = blank + star;
    }
    result.forEach((e) => {
        console.log(e);
    });
}

다이아몬드 패턴을 생성하기 위해서는 크기가 2 * n - 1인 배열을 준비해야 합니다. 다이아몬드 패턴은 하나의 점에서 시작하여 가운데까지 증가한 후, 다시 감소하는 형태를 가지므로, 처음부터 가운데까지만 생성하면 됩니다.

이를 위해 양 끝을 인덱스로 사용하는 공식을 만들고, 공백의 개수는 n - 1부터 시작하여 한 칸씩 줄이고, 모양은 1부터 시작하여 2씩 증가하는 등차수열을 사용합니다. 이렇게 생성된 패턴을 양 끝에 넣어주고, 가운데까지 점진적으로 넣어가면서 완성합니다.

'코딩문제' 카테고리의 다른 글

가장 많이 등장하는 알파벳 찾기  (0) 2024.03.30
회문 판별기  (0) 2024.03.29
초나라 장기 기물 정리하기  (0) 2024.03.28
전화번호 키패드 누름 시간 계산  (0) 2024.03.27
거꾸로 최댓값 찾기  (0) 2024.03.27