Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BOJ] 2447 별 찍기 - 10 #41

Open
wants to merge 28 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
063c09a
Add @Parkjju as a contributor
Parkjju Jul 15, 2022
10f5a89
Add @4923 as a contributor
Parkjju Jul 15, 2022
56214e2
Add @4923 as a contributor
Parkjju Jul 15, 2022
c5fec1f
Add @Parkjju as a contributor
Parkjju Jul 15, 2022
81189c1
Add @hotsun1508 as a contributor
Parkjju Jul 15, 2022
dd1da96
Add @HajunYoo as a contributor
Parkjju Jul 15, 2022
86b2664
Add @wJJin as a contributor
Parkjju Jul 15, 2022
62fa6d5
Add @Hellol77 as a contributor
Parkjju Jul 15, 2022
4535c23
Add @SeolHuiGwan9478 as a contributor
Parkjju Jul 15, 2022
3d098ed
📝 docs: all-contributors CLI yarn 패키지 설치
Parkjju Jul 15, 2022
b4a2836
📝 docs: contributorsPerLine 프로퍼티 4 -> 7로 수정
Parkjju Jul 15, 2022
a543d6d
📝 docs(yarn all-contributors generate, 최신데이터 반영): yarn all-contributo…
Parkjju Jul 15, 2022
8f8e41e
📝 docs: url 그대로 노출되는 문제
Parkjju Jul 15, 2022
60c1000
🐛 fix: 뱃지 위치 수정
Parkjju Jul 15, 2022
42eefae
📝 docs: hufslion 이미지 위치 수정
Parkjju Jul 15, 2022
d39d2e6
Merge branch 'docs/contributor'
Parkjju Jul 15, 2022
e6a3553
Add @hotsun1508 as a contributor
Parkjju Jul 15, 2022
6add591
📝 docs: boj 11729 하노이 탑 이동 순서
Parkjju Jul 16, 2022
3b20fb7
📝 docs: boj 11729 시간초과 에러 해결
Parkjju Jul 16, 2022
8ec93fe
Merge branch 'hufslion10th:main' into main
Parkjju Jul 18, 2022
0da0b6d
📝 docs: boj 1074 Z - 헬퍼메서드 활용 표현
Parkjju Jul 18, 2022
4d8673c
📝 docs: boj 1074 Z
Parkjju Jul 18, 2022
cd227ba
Merge branch 'hufslion10th:main' into main
Parkjju Jul 20, 2022
0d5279a
Merge branch 'hufslion10th:main' into main
Parkjju Jul 22, 2022
bf54ffe
Merge branch 'hufslion10th:main' into main
Parkjju Jul 22, 2022
33cd7ad
Merge branch 'hufslion10th:main' into main
Parkjju Jul 26, 2022
25ab146
Merge branch 'hufslion10th:main' into main
Parkjju Jul 27, 2022
9e470eb
📝 docs: bOJ 2447 별 찍기 - 10
Parkjju Jul 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions BOJ/2447/parkjju.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
// N * N 사이즈만큼 별들을 그려놓고
// 별의 가운데를 재귀적으로 지우는 로직을 기반으로 한다.

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

let input = undefined;

rl.on('line', (line) => {
// input 데이터 정제
input = +line;
rl.close();
}).on('close', () => {
solution(input);
process.exit();
});

const solution = () => {
// 헬퍼메서드 형태
// N*N 별 그리기
let arr = [];
for (let i = 0; i < input; i++) {
arr.push([]);
for (let j = 0; j < input; j++) {
arr[i].push('*');
}
}

// 재귀함수
// 변의 길이가 N이고
// 몇 번째 조각을 나타내는지 row, col로 가리킴
const helper = (N, row, col) => {
// 변의 길이가 1일 경우 재귀 종료 - 바닥조건
if (N === 1) {
return;
}

// 가운데 뚫는 로직
// 가운데 인덱스를 나타내는 N/3 ~ (2*N)/3-1
// 가운데 뚫는 로직이 현재 사각형 크기 기준으로 곱하기 3 크기의 사각형 나머지 8조각 중 row, col에 해당하는 조각의 가운데를 뚫어야함
// N*row, N*col 인덱스로 접근해야 곱하기 3 크기 사각형 나머지 8조각 중 하나를 유일하게 선택하게 됨
for (let i = N / 3; i < (2 * N) / 3; i++) {
for (let j = N / 3; j < (2 * N) / 3; j++) {
arr[i + N * row][j + N * col] = ' ';
}
}

// 9조각 나누어 재귀호출
for (let i = 0; i < 3; i++) {
for (let j = 0; j < 3; j++) {
// 변의 길이 나누기 3만큼의 크기를 가지는 사각형 조각
// 조각을 가리키되 현재 row, col은 9조각으로 쪼개진 조각 기준으로 3을 곱한 위치를 가리켜야 함
// 길이가 9인 변을 9조각으로 나눈 조각 중 2번째 조각은
// 길이가 3인 부분 조각들 중 3*2+1부터 시작해야함
helper(N / 3, i + 3 * row, j + 3 * col);
}
}
};

helper(input, 0, 0);
arr.forEach((item) => console.log(item.join('')));
};