Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- visibility : hidden
- map()
- filter()
- innerhtml
- classList.contains(string)
- 배열과 연결리스트의 차이
- for..of
- 객체
- invalid assignment left-hand side
- display : none
- CSS
- 배열의 오름차순
- 쌍방향 연결리스트
- Array.from()
- indexOf
- Em
- 단방향 연결리스트
- nth-child()
- 배열의 내림차순
- 고차함수
- 범용 선택자
- Link
- 인접 형제 선택자 결합
- 백준알고리즘
- 일반 형제 선택자 결합
- 가상 요소 선택자
- Sort
- 등차수열의 항 찾기
- 양방향 연결리스트
- disabled
Archives
- Today
- Total
프론트엔드 센트럴파크 (☞゚ヮ゚)☞
나무 그리기 본문
각 행별로 개행문자(\n)을 넣어주면서 *을 찍으며 출력 값 형태로 나무를 그려준다.
function answer(height) {
let str = "\n";
for (let i = 0; i < height; i++) {
// 1. 공백 처리 " "
for (let j = 0; j < height - i - 1; j++) {
str += " ";
}
// 2. * 처리 "*" 2n + 1
for (let j = 0; j < i * 2 + 1; j++) {
str += "*";
}
// 3. 개행문자 추가
str += "\n";
}
return str;
}
let input = [
3,
5,
7,
];
for (let i = 0; i < input.length; i++) {
console.log(`#${i + 1} ${answer(input[i])}`);
}
풀이
이중 for문을 사용하여 큰 for문은 height의 길이만큼 반복이 되어야 트리의 윤곽이 잡힌다.
그와 동시에 공백과 별을 동시에 그려야 트리가 완성될 수 있다.
1. 공백처리
for (let j = 0; j < height - i - 1; j++) {
str += " ";
}
공백은 입력값 보다 -1만큼의 갯수를 가지고 있다. 그리고 개행을 할 수록 i만큼 공백의 수가 작아지를 것을 알 수 있다.
입력값이 3일 경우에 첫번째 줄 공백은 2칸이고 두번째줄 공백은 1칸이다.
2. * 처리
for (let j = 0; j < i * 2 + 1; j++) {
str += "*";
}
별의 갯수는 2n -1 이기 때문에 i*2 + 1 로 표현하였다.
'Algorism' 카테고리의 다른 글
벽돌 옮기기 (0) | 2022.07.26 |
---|---|
ox 퀴즈 (0) | 2022.07.25 |
배열의 element들의 값이 많을 때, 정해진 합 구하기 (0) | 2022.07.22 |
두 수 최대 합 (0) | 2022.07.21 |
길이가 동일한 배열의 값 빼기 (0) | 2022.07.21 |
Comments