2444번: 별 찍기 - 7
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
www.acmicpc.net
풀이
KeyPoint
반복문
문제의 규칙 알아내기
- "공백"과 "별"의 개수를 정하는 count 변수들을 생성한다.
- let spaceCount = input - 1
- input이 5면 1번째 줄은 공백 4, 별1 로 시작한다.
- input이 4면 1번째 줄은 공백 3, 별1로 시작한다.
- 따라서 공백의 첫번째 값은 input - 1이 된다.
- let starCount = 1;
- 별은 항상 1부터 시작한다.
- let spaceCount = input - 1
- 문제에 나와있는 대로 일단 input 의 2 X input -1 번째 줄까지 반복하는 반복문을 만든다.
- 한줄한줄 출력할 내용을 담은 변수 line을 생성한다.
- spaceCount만큼 line변수에 공백을 넣어주는 반복문을 만든다.
- starCount만큼 line변수에 별을 넣어주는 반복문을 만든다.
- 규칙을 적용한다.
- 1번째 줄 ~ 5번째 줄 : 공백은 1씩 줄고, 별은 2씩 늘어난다.
- 5번재 줄 ~ 9번째 줄 : 공백은 1씩 늘고, 별은 2씩 줄어든다.
규칙 ( input = 5일 때)
1번째 줄 : 공백4 별1 // 공백은 1개씩 감소하고, 별은 2개씩 증가한다.
2번째 줄 : 공백3 별3
3번째 줄 : 공백2 별5
4번째 줄 : 공백1 별7
5번째 줄 : 공백0 별9 // 여기서부터 규칙을 반대로 적용한다. 공백은 1개씩 증가하고, 별은 2개씩 감소한다.
6번째 줄 : 공백1 별7
7번째 줄 : 공백2 별5
8번째 줄 : 공백3 별3
9번째 줄 : 공백4 별1
규칙 (input = 4일 때)
1번째 줄 : 공백3 별1 // 공백은 1개씩 감소하고, 별은 2개씩 증가한다.
2번째 줄 : 공백2 별3
3번째 줄 : 공백1 별5
4번째 줄 : 공백0 별7 // 여기서부터 규칙을 반대로 적용한다. 공백은 1개씩 증가하고, 별은 2개씩 감소한다.
5번째 줄 : 공백1 별5
6번째 줄 : 공백2 별3
7번째 줄 : 공백3 별1
코드
const input = require("fs").readFileSync("/dev/stdin").toString();
let spaceCount = input - 1;
let starCount = 1;
// 총 2 * input - 1 번 출력하는 반복문
for (let i = 0; i < 2 * input - 1; i++) {
let line = ""; //출력할 공백과 별을 담은 변수
// line에 공백을 넣는 반복문
for (let j = spaceCount; j > 0; j--) {
line += " ";
}
// line에 별을 넣는 반복문
for (let k = 0; k < starCount; k++) {
line += "*";
}
// 5 ~ 9번째까지의 규칙
if (i + 1 >= input) {
spaceCount++;
starCount -= 2;
}
// 1 ~ 5 번째까지의 규칙
else {
spaceCount--;
starCount += 2;
}
console.log(line);
}
'Programing > 백준' 카테고리의 다른 글
[백준/JS] 1157 - 단어공부 (0) | 2023.09.06 |
---|---|
[백준/JS] 10988 - 팰린드롬인지 확인하기 (0) | 2023.09.06 |
[백준/JS] 3003 - 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.09.01 |
[백준/JS] 11718 - 그대로 출력하기 (0) | 2023.08.30 |
[백준/JS] 5622 - 다이얼 (0) | 2023.08.29 |
댓글