(BOJ2445 별 찍기 - 8

Link copied to clipboard

문제 설명

Link copied to clipboard
  • 규칙에 따라 출력하는 단순한 문제

문제 풀이

Link copied to clipboard

Python

Link copied to clipboard
N = int(input())
output = ""
for i in range(1, N + 1):
    output += "*" * i + " " * (N - i) + " " * (N - i) + "*" * i + "\n"
for i in range(N - 1, 0, -1):
    output += "*" * i + " " * (N - i) + " " * (N - i) + "*" * i + "\n"
print(output)
  • 문자열 연산으로 간단하게 구현

Go

Link copied to clipboard
for i := 1; i <= N; i++ {
    for j := 0; j < i; j++ {
        wr.WriteByte('*')
    }
    for j := 0; j < N-i; j++ {
        wr.WriteByte(' ')
    }
    for j := 0; j < N-i; j++ {
        wr.WriteByte(' ')
    }
    for j := 0; j < i; j++ {
        wr.WriteByte('*')
    }
    wr.WriteByte('\n')
}
  • Go의 문자열은 immutable
  • 아마 슬라이스나 배열에 저장하고 출력하는 방법을 썼으면 줄마다 출력하지 않아도 됬을 것 같다.

Node.js

Link copied to clipboard

for (let i = 1; i <= N; i++) {
  for (let j = 0; j < i; j++) {
    output += "*"
  }
  for (let j = 0; j < N - i; j++) {
    output += " "
  }
  for (let j = 0; j < N - i; j++) {
    output += " "
  }
  for (let j = 0; j < i; j++) {
    output += "*"
  }
  output += "\n"
}
  • Go와 유사하지만 문자열을 더해가며 마지막에 한번에 출력하는 방식으로 구현