별 찍기 - 2 (2439)

Created:

Baekjoon No.2439
빈 공간은 출력하지 않는 게 아니라 공백 한 칸을 출력해야 한다.

Bash

Bash
1
2
3
4
5
6
7
8
read n
for ((i=1; i<=n; i++)); do
	o=""
	for ((j=0; j<i; j++)); do
		o+=\*
	done
	printf "%${n}s\n" "$o"
done

printf 명령어를 사용하여 n 자리로 출력하며 문자는 오른쪽으로 정렬.
왼쪽 정렬은 %-5s 형식, 중앙 정렬은 없다.
다른 언어와 달리 자릿수를 지정할 때 변수를 사용할 수 있기 때문에 가능한 방법.

C

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stdio.h>

int main(void) {
	int n;
	scanf("%d", &n);
	for (int i=1; i<=n; i++) {
		for (int j=0; j<n-i; j++) {
			printf(" ");
		}
		for (int j=0; j<i; j++) {
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

Node.js

JavaScript
1
2
3
4
5
6
7
8
let n = Number(require("fs").readFileSync(0).toString().trim());
for (let i=1; i<=n; i++) {
	let o = [];
	for (let j=0; j<n; j++) {
		o.push(j < n-i ? " " : "*");
	}
	console.log(o.join(""));
}

PHP

PHP
1
2
3
4
5
6
7
8
9
10
<?php
	fscanf(STDIN, "%d", $n);
	for ($i=1; $i<=$n; $i++) {
		$o = [];
		for ($j=0; $j<$n; $j++) {
			array_push($o, $j < $n-$i ? " " : "*");
		}
		echo join("", $o)."\n";
	}
?>

Python3

Python
1
2
3
4
5
6
n = int(input())
for i in range(1, n+1):
    o = []
    for j in range(n):
        o.append(" " if j < n-i else "*")
    print("".join(o))

Ruby

Ruby
1
2
3
4
5
6
7
8
n = gets.chomp.to_i
for i in 1..n
  o = []
  for j in 0...n
    o.push(j < n-i ? " " : "*")
  end
  puts o.join("")
end