이 문제는 다음과 같은 X자 형태로 출력하는 문제이다.
* *
* *
*
* *
* *
이 문제를 나누어서 풀어보면,
1번째 반복문 - 공백 추가, 별찍기, 공백 추가, 별찍기(하나만 있어야 하는 중간 지점이 아니라면)
2번째 반복문 - 공백 추가, 별찍기, 공백 추가, 별찍기
2번째 반복문은 1번째 반복문에서 별이 하나만 있는 부분을 제외한 부분을 반대로 하면 된다.
다만 이 문제에서 나는 console.log를 사용하려고 했고, console.log에서는 줄바꿈이 필수적이라 text에 저장한 다음 최종적으로 줄바꿈이 필요한 시점에 출력하는 방식을 사용하였다.
1번째 반복문에서 공백을 추가하고 별찍기를 한 다음, 다시 공백을 추가하고 별찍기를 하는 부분이다.
for (let i = 0; i < n; i++){
let text = '';
for (let j = 0; j < i; j++){//공백 추가
text += ' ';
}
text += '*';//별찍기
for (let j = 0; j < 2*(n-i-1)-1; j++){//공백 추가
text += ' ';
}
if (i != n-1){//별찍기(하나만 있는 부분이 아니라면)
text += '*';
}
console.log(text);//최종 출력
}
이후 2번째 반복문에서는 이를 역순으로 출력하는 코드로 구성했다.
for (let i = n-2; 0 <= i; i--){
let text = '';
for (let j = 0; j < i; j++){//공백 추가
text += ' ';
}
text += '*';//별찍기
for (let j = 0; j < 2*(n-i-1)-1; j++){//공백 추가
text += ' ';
}
text += '*';//별찍기
console.log(text);/최종 출력
}
최종 코드
let n = 4;
for (let i = 0; i < n; i++){
let text = '';
for (let j = 0; j < i; j++){
text += ' ';
}
text += '*';
for (let j = 0; j < 2*(n-i-1)-1; j++){
text += ' ';
}
if (i != n-1){
text += '*';
}
console.log(text);
}
for (let i = n-2; 0 <= i; i--){
let text = '';
for (let j = 0; j < i; j++){
text += ' ';
}
text += '*';
for (let j = 0; j < 2*(n-i-1)-1; j++){
text += ' ';
}
text += '*';
console.log(text);
}'기타' 카테고리의 다른 글
| 뒤집어도 같은 숫자 (0) | 2025.05.26 |
|---|---|
| 별찍기 with 숫자 (0) | 2025.05.26 |
| 우분투, SSH (0) | 2025.05.14 |
| Git, Github (3) | 2025.05.07 |
| 구조체가 담긴 배열의 포인터 (0) | 2025.04.15 |