본문 바로가기
Coding Test (코딩 테스트)

코딩테스트 9일차(2025.01.23) - 백준2438번(별 찍기 - 1)

by BioLearner 2025. 1. 23.
반응형

내 풀이

공백이 있는 피라미드 쌓기

import sys

input = sys.stdin.readline

n = int(input().rstrip())

for i in range(1, n + 1):
    print(f"{(n - i) * ' '}{i * '*'}")

결과: 정답

더 옳은 정답

N = int(input())
for i in range(1, N + 1):
    print(' ' * (N - i) + '*' * i)

 

고찰

현재 코드를 다른 언어(예: C, Java, JavaScript 등)로 구현한다면 어떤 차이가 있을까?

 

C 언어

#include <stdio.h>

int main() {
    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;
}

 

Java

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();

        for (int i = 1; i <= n; i++) {
            System.out.println(" ".repeat(n - i) + "*".repeat(i));
        }
        scanner.close();
    }
}

 

javascript

const n = parseInt(prompt("Enter the number of rows:"));

for (let i = 1; i <= n; i++) {
    console.log(" ".repeat(n - i) + "*".repeat(i));
}

 

피라미드 외에도 비슷한 패턴 출력 문제(정사각형, 다이아몬드, 체스판 등)를 어떻게 해결할 수 있을까?

정사각형, 다이아몬드, 체스판 모두 

print()를 활용해서 할 수 있다. 

 

체스판의 경우 

for i in range(n):
    for j in range(n):
        if (i + j) % 2 == 0:
            print('#', end=' ')
        else:
            print(' ', end=' ')
    print()

이런 방식으로 해서 채스판처럼 만들 수가 있다. 

반응형