구현, 수학
[백준] 2445. 별 찍기 - 8 풀이
hch06
2025. 2. 2. 21:49
https://www.acmicpc.net/problem/2445
첫번째 줄에 별1개와 공백 N-1개, 두번째 줄에 별 2개와 N-2개...N번째 줄에 별 N개를 출력하는 형식에서 각 줄의 공백 수만큼 해당 줄에 추가하고, 각 줄의 별 수만큼 해당 줄에 추가하였다. 이는 상하 대칭이므로 이 과정을 역으로 한번 더 출력했다. 이때 역으로 출력하는 반복문의 경우 가장 첫번째 과정은 제외해야 한다.
C
더보기
#include <stdio.h>
void prints(int v, int n) {
for(int i = 0; i < n; i++) printf("*");
for(int i = 0; i < v; i++) printf(" ");
for(int i = 0; i < n; i++) printf("*");
printf("\n");
}
int main() {
int n; scanf("%d", &n);
for(int i = 1; i <= n; i++) prints((n*2) - (i+i), i);
for(int i = n-1; i >= 1; i--) prints((n*2) - (i+i), i);
}
Python
더보기
def prints(v, n):
for _ in range(n): print('*', end='')
for _ in range(v): print(' ', end='')
for _ in range(n): print('*', end='')
print()
n = int(input())
for i in range(1, n+1): prints((n*2) - (i+i), i)
for i in range(n-1, 0, -1): prints((n*2) - (i+i), i)
Java
더보기
import java.util.Scanner;
public class Main {
static void printStar(int space, int star){
for(int i = 0; i < space; i++) System.out.print(" ");
for(int i = 0; i < star; i++) System.out.print("*");
}
public static void main(String args[]) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
for(int i = 1; i <= n; i++){
printStar(0, i); printStar((n*2)-(2*i), i);
System.out.print("\n");
}
for(int i = n-1; i > 0; i--){
printStar(0, i); printStar(2*(n-i), i);
System.out.print("\n");
}
}
}
JavaScript
더보기
function printStar(space, star){
res = ''
for(let i = 0; i < space; i++) res += ' '
for(let i = 0; i < star; i++) res += '*'
return res
}
n = parseInt(require('fs').readFileSync(0))
for(let i = 1; i <= n; i++){
str = ''
str += printStar(0, i)
str += printStar((n*2)-(2*i), i)
console.log(str)
}
for(let i = n-1; i > 0; i--){
str = ''
str += printStar(0, i); str += printStar(2*(n-i), i)
console.log(str)
}