반응형
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수)
출력
첫째 줄부터 N번째 줄까지 별을 출력한다.
예제 입력 1 복사
24
예제 출력 1 복사
*
* *
*****
* *
* * * *
***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* *
* * * *
***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * *
* * * * * * * *
***** ***** ***** *****
* * * * * * * *
* * * * * * * * * * * * * * * *
***** ***** ***** ***** ***** ***** ***** *****
나의 풀이
const start = [` *`, ` * *`, `*****`];
const loop = (cnt, index, array) => {
if (cnt === 0) return;
const reverse = [...array].reverse().map((value) => {
return value.trim().replaceAll("*", " ");
});
const arrayLength = array.length;
const blank = (array[arrayLength - 1].length + 1) / 2;
for (let i = 0; i < arrayLength; i++) {
array.push(array[i] + reverse[i] + array[i].trim());
array[i] = " ".repeat(blank) + array[i];
}
loop(cnt - 1, index + 1, array);
};
const func = (num) => {
let cnt = 1;
const array = [...start];
for (let i = num; i !== 3; i /= 2) {
cnt++;
}
loop(cnt - 1, 1, array);
console.log(array);
};
func(48);
반응형
'알고리즘' 카테고리의 다른 글
[알고리즘] 영어 끝말잇기 (0) | 2023.09.17 |
---|---|
[알고리즘] 짝지어 제거하기 (0) | 2023.09.16 |
[알고리즘] 최대공약수와 최소공배수 (0) | 2023.08.12 |
[알고리즘] 소수 찾기 (0) | 2023.08.09 |
[알고리즘] 크레인 인형뽑기 게임 (0) | 2023.08.03 |