직사각형 별찍기

문제 링크

직사각형 별찍기

분석

입력을 받고, 조건에 따라 출력하는 문제입니다.

2중 반복문을 사용해 하나씩 출력할 수 있습니다.
또는 반복문 1개만 사용하고, 출력하는 줄의 별을 한번에 출력하는 방법이 있습니다.

풀이

2중 반복문을 사용하는 방법입니다.

#include <iostream>

int main(void) {
    int a;
    int b;
    std::cin >> a >> b;
    
    for (int i = 0; i < b; ++i)
    {
        for (int j = 0; j < a; ++j)
        {
            std::cout << '*';
        }
        
        std::cout << std::endl;
    }
    
    return 0;
}

std::cin >> a >> b는 입력을 받습니다.

a는 가로길이, b는 세로길이이므로 위와 같은 2중 반복문이 나옵니다.

std::cout << '*'에서 별을 하나씩 출력합니다.

std::cout << std::endl에서 줄바꿈을 해줍니다.


한 줄의 별은 한번에 출력하는 방법입니다.

#include <iostream>
#include <string>

int main(void) {
    int a;
    int b;
    std::cin >> a >> b;
    
    std::string str;
    str.append(a, '*');
    
    for (int i = 0; i < b; ++i)
    {        
        std::cout << str << std::endl;
    }
    
    return 0;
}

str.append(a, '*')는 문자열에 a개 별을 문자열 끝부분부터 넣어줍니다.

std::cout << str << std::endlstr변수에 있는 별들을 출력하고, 줄바꿈을 해줍니다.

성능 요약

2중 반복문을 사용한 성능입니다.

테스트 1 〉 통과 (2.25ms, 4.13MB)
테스트 2 〉 통과 (2.77ms, 4.2MB)
테스트 3 〉 통과 (2.00ms, 4.14MB)
테스트 4 〉 통과 (2.77ms, 4.15MB)
테스트 5 〉 통과 (1.91ms, 4.16MB)
테스트 6 〉 통과 (2.56ms, 3.63MB)
테스트 7 〉 통과 (2.62ms, 4.12MB)
테스트 8 〉 통과 (3.59ms, 4.01MB)
테스트 9 〉 통과 (4.55ms, 4.2MB)
테스트 10 〉 통과 (2.51ms, 4.14MB)
테스트 11 〉 통과 (3.20ms, 4.19MB)


반복문을 하나만 사용해 한 줄의 별은 한번에 출력한 성능입니다.

테스트 1 〉 통과 (2.10ms, 4.08MB)
테스트 2 〉 통과 (1.96ms, 4.21MB)
테스트 3 〉 통과 (2.90ms, 4.18MB)
테스트 4 〉 통과 (2.60ms, 3.68MB)
테스트 5 〉 통과 (2.12ms, 4.14MB)
테스트 6 〉 통과 (2.06ms, 3.68MB)
테스트 7 〉 통과 (4.94ms, 4.2MB)
테스트 8 〉 통과 (3.94ms, 4.12MB)
테스트 9 〉 통과 (3.13ms, 4.14MB)
테스트 10 〉 통과 (3.40ms, 4.14MB)
테스트 11 〉 통과 (3.12ms, 4.21MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기