문제
다이아몬드 패턴을 생성하는 프로그램을 작성하시오.
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 |