문제
예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.
입력
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력
첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.
풀이
별 찍기 - 8은 나비모양과 유사한 형태로 별을 찍어야 하는 문제였는데
별 사이에 공백이 (input-i) * 2, 별들은 각각 input개가 앞 뒤에 존재하는 규칙이었다.
다만 input까지의 줄을 입력한 다음에는 다시 위에서 진행한 내용의 역순으로 내려가기 때문에
for문을 통해 역순으로 진행했다.
일반적으로는 .repeat()을 사용해 반복을 진행해야 하지만
아래는 .repeat을 사용하지 못할 때 사용했던 원시적인 해결방법이다.
(그 아래에 제출했던 코드와 console로 찍을 수 있는 코드가 존재한다)
//예전의 특이한 코드인데 지나치게 특이해서 올려봤다
let input = 5
let result = ''
function star(num) {
let result = ''
for(let i = 0 ; i < num ; i++){
result += '*'
}
return result
}
function blank(num) {
let result = ''
for(let i = 0 ; i < num ; i++){
result += ` `
}
return result
}
for(let i = 1 ; i <= input ; i++){
result +=`${star(i)}${blank(input-i)}${star(i)}\n`
}
for(let i = input-1 ; i >= 1 ; i--){
result +=`${star(i)}${blank(input-i)}${star(i)}\n`
}
console.log(result)
const input = Number(require('fs').readFileSync('/dev/stdin').toString().trim())
const result = []
for(let i = 1 ; i <= input ; i++){
result.push(`${'*'.repeat(i)}${' '.repeat(input-i)}${'*'.repeat(i)}`)
}
for(let i = input-1 ; i >= 1 ; i--){
result.push(`${'*'.repeat(i)}${' '.repeat(input-i)}${'*'.repeat(i)}`)
}
console.log(result.join('\n'))
const input = 10
const result = []
for(let i = 1 ; i <= input ; i++){
result.push(`${'*'.repeat(i)}${' '.repeat(input-i)}${'*'.repeat(i)}`)
}
for(let i = input-1 ; i >= 1 ; i--){
result.push(`${'*'.repeat(i)}${' '.repeat(input-i)}${'*'.repeat(i)}`)
}
console.log(result.join('\n'))'알고리즘 > 백준' 카테고리의 다른 글
| [백준 JS] 2446번 별 찍기 - 9 (1) | 2023.04.01 |
|---|---|
| [백준 JS] 2444번 별 찍기 - 7 (1) | 2023.04.01 |
| [백준 JS] 2443번 별 찍기 - 6 (0) | 2023.03.13 |
| [백준 JS] 2442번 별 찍기 - 5 (0) | 2023.03.13 |
| [백준 JS] 2441번 별 찍기 - 4 (0) | 2023.03.13 |
