이 글에서는 자바스크립트 콘솔에 다음과 같은 별(*) 패턴을 출력하는 아주 간단한 방법을 소개합니다. 주의할 점은 결과가 HTML 화면이 아닌 콘솔(console)에 출력되어야 한다는 것입니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
위 패턴은 가운데를 기준으로 별의 개수가 늘어났다가 다시 줄어드는 다이아몬드 형태입니다. 이를 구현하는 핵심 아이디어는 반복문 안에서 각 줄에 출력할 별의 개수를 계산하는 것입니다.
예제 코드
const star = "* ";
// length는 가장 긴 줄에 들어갈 별의 개수
const length = 6;
for(let i = 1; i <= (length*2)-1; i++){
const k = i <= length ? i : (length*2)-i;
console.log(star.repeat(k));
}실행 결과
콘솔에는 아래와 같이 출력됩니다.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
코드 동작 원리
이 코드의 핵심은 문자열 메서드인 repeat()입니다. repeat(n)은 해당 문자열을 n번 반복하여 새로운 문자열을 생성합니다. 즉, "* ".repeat(3)은 * * *를 반환합니다.
반복문은 총 (length × 2) - 1번 실행됩니다. 여기서 삼항 연산자를 사용해 별의 개수를 결정합니다.
- i가 length보다 작거나 같으면(증가 구간): k = i → 별이 한 개씩 늘어납니다.
- i가 length보다 크면(감소 구간): k = (length × 2) − i → 별이 한 개씩 줄어듭니다.
이렇게 하면 별의 개수가 1부터 length까지 증가한 후, 다시 1까지 감소하는 대칭적인 패턴이 완성됩니다.
복잡도 분석
이 코드의 시간 복잡도는 O(length²)이며, 공간 복잡도는 O(1)입니다. 전체 출력 문자 수가 별 개수의 제곱에 비례해 증가하기 때문에 시간 복잡도가 O(N²)이 되고, 추가적인 저장 공간 없이 매 줄마다 바로 출력하므로 공간은 상수로 유지됩니다.