문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

 

 

입력

첫째 줄에 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

+ Recent posts