Link
문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력 > 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력 >첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
| 예제 입력 1
1
| 예제 출력 1
*
| 예제 입력 2
2
| 예제 출력 2
*
***
| 예제 입력 3
3
| 예제 출력 3
*
* *
*****
제출
const fs = require("fs");
const input = Number(
process.platform === "linux" ? fs.readFileSync("/dev/stdin").toString() : `4`
);
let answer = " ".repeat(input * 2 - 1).split("");
let start = Math.floor((input * 2 - 1) / 2);
let end = start;
for (let i = 1; i <= input; i++) {
answer[start] = "*";
answer[end] = "*";
start--;
end++;
if (i === input) {
answer.fill("*");
}
console.log(answer.join("").trimEnd());
answer.fill(" ");
}
풀이과정
answer에는 input * 2 - 1 만큼의 공백이 배열로 들어있다.
start와 end는 공백이 별로 바뀔 처음과 끝 인덱스이다.
따라서 for문이 진행됨에따라 start는 앞으로, end는 뒤로 가며 공백을 별로 바꿔준다.
백준의 출력 예시를 보면 각 줄의 끝에 공백이 포함되어 있지 않기 때문에
trimEnd() 메서드로 끝의 공백을 제거해준 뒤 정답을 출력한다.
개념
Math.floor()
- 주어진 숫자와 같거나 작은 정수 중에서 가장 큰 수를 반환한다. (소수점 내림)
Array.prototype.fill()
- 배열의 시작 인덱스부터 끝 인덱스까지 지정한 값으로 채워 변경된 배열을 반환한다.
- 매개변수 구성은 다음과 같다.
- value : 배열을 채울 값
- start : 시작 인덱스 (optional)
- end : 끝 인덱스 (optional)
String.prototype.trimEnd()
- 문자열 끝 공백이 제거된 새 문자열을 반환한다.
- 문자열에 공백이 없어도 에러가 발생하지 않고, 복사본을 반환한다.
유사한 문제
Comment
trimEnd()로 끝의 공백을 제거해주지 않으면 출력 형식이 잘못되었다는 에러가 발생한다.
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 1463: 1로 만들기 (javascript) (0) | 2022.12.01 |
---|---|
[백준] 10991: 별 찍기 - 16 (javascript) (0) | 2022.11.30 |
[백준] 2446: 별 찍기 - 9 (javascript) (0) | 2022.11.30 |
[백준] 2522: 별 찍기 - 12 (javascript) (2) | 2022.11.30 |
[백준] 2445: 별 찍기 - 8 (javascript) (0) | 2022.11.30 |