[BOJ] 10994번: 별 찍기 - 19 자바스크립트 풀이

2025. 6. 20. 02:49·Algorithm

문제

https://www.acmicpc.net/problem/10994

 

 

 

풀이과정

의사 코드

크기 4*N-3인 정사각형을 시작으로, 내부에 한 칸씩 들어가며 더 작은 정사각형 테두리를 재귀적으로 그림.

더 이상 작게 그릴 수 없는 크기 N = 1이 되면 종료.

1. 입력값 N을 받는다.
2. 전체 정사각형의 크기를 size = 4 * N - 3 으로 계산한다.
3. size x size 크기의 2차원 배열을 생성하고, 모든 칸을 공백(' ')으로 초기화한다.
4. (0, 0)부터 시작하여 N 크기의 정사각형을 그리는 함수 drawStar(x, y, n)을 호출한다.

함수 drawStar(x, y, n)
- 현재 그릴 정사각형의 한 변의 길이를 size = 4 * n - 3 으로 계산한다.
- 상단 가로줄: (x, y) ~ (x, y + size - 1)까지 별('*')을 채운다.
- 하단 가로줄: (x + size - 1, y) ~ (x + size - 1, y + size - 1)까지 별('*')을 채운다.
- 좌측 세로줄: (x, y) ~ (x + size - 1, y)까지 별('*')을 채운다.
- 우측 세로줄: (x, y + size - 1) ~ (x + size - 1, y + size - 1)까지 별('*')을 채운다.
- 재귀 조건: 
n이 1보다 크면, 내부에 또 다른 정사각형을 그릴 수 있으므로 drawStar(x + 2, y + 2, n - 1)을 호출한다.
(안쪽 정사각형은 바깥보다 2칸 안쪽에서 시작) 5. 모든 재귀가 완료되면, 배열의 각 행을 문자열로 만들어 한 줄씩 출력한다.

 

 

 

 

전체 코드

const readline = require('readline');
const rl = readline.createInterface({ input: process.stdin });

let result;

rl.on('line', (line) => {
    const N = Number(line.trim());
    const size = 4 * N - 3;
    result = Array.from({ length: size }, () => Array(size).fill(' '));
    
    drawStar(0, 0, N);
    console.log(result.map(row => row.join('')).join('\n'));
    
    rl.close();
});

function drawStar(x, y, n) {
    let size = 4 * n - 3;
    
    for (let i = 0; i < size; i++) {
        // 정사각형 상하
        result[x][y + i] = '*';
        result[x + size - 1][y + i] = '*';
        
        // 정사각형 좌우
        result[x + i][y] = '*';
        result[x + i][y + size - 1] = '*';
    }
    
    if (n > 1) {
        drawStar(x + 2, y + 2, n - 1);
    }
}

'Algorithm' 카테고리의 다른 글

[BOJ] 2346번: 풍선 터뜨리기 자바스크립트 풀이 (메모리 초과)  (0) 2025.07.08
[BOJ] 22858번: 원상 복구 (small) 자바스크립트 풀이  (0) 2025.06.22
[BOJ] 5766번: 할아버지는 유명해! 자바스크립트 풀이  (2) 2025.06.20
'Algorithm' 카테고리의 다른 글
  • [BOJ] 2346번: 풍선 터뜨리기 자바스크립트 풀이 (메모리 초과)
  • [BOJ] 22858번: 원상 복구 (small) 자바스크립트 풀이
  • [BOJ] 5766번: 할아버지는 유명해! 자바스크립트 풀이
zooyaa
zooyaa
  • zooyaa
    성장 중!
    zooyaa
  • 전체
    오늘
    어제
    • 분류 전체보기 (12)
      • Algorithm (4)
      • CS (5)
      • Projects (0)
      • Web (1)
      • 경험들 (2)
  • 인기 글

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
zooyaa
[BOJ] 10994번: 별 찍기 - 19 자바스크립트 풀이
상단으로

티스토리툴바