[TIL #19] 사각형 별 찍기

2024. 7. 17. 17:30·Camp/T.I.L.

프로그래밍을 처음 배울 때 한번씩은 해 보는 별 찍기.

사각형으로 한번 찍어보고 삼각형으로 넘어갔던 것 같다.

 

그땐 마침 반복문을 배운 때였으니 별 찍기로 향하는 것은 당연했으리라.

코드를 이렇게 작성했었다.

#include <iostream>

int main() {
    int width = 10;  // 직사각형의 가로 길이
    int height = 5;  // 직사각형의 세로 길이

    // 세로 길이만큼 반복
    for (int i = 0; i < height; ++i) {
        // 가로 길이만큼 반복
        for (int j = 0; j < width; ++j) {
            std::cout << "*";
        }
        std::cout << std::endl;  // 한 줄 출력 후 줄 바꿈
    }

    return 0;
}

반복문을 활용한 정석적인 직사각형 별 찍기다.

 

지금 생각해 보니 이거보다 더 효율적인 방법이 있었다.

가로길이만큼의 문자열을 담은 변수를 선언하고 그걸 세로길이만큼 반복하면 된다.

#include <iostream>
#include <string>

using namespace std;

int main(void) {
    int a;
    int b;
    cin >> a >> b;
    
    string tmp(a, '*');
    
    for(int i = 0; i < b; ++i)
        cout << tmp << '\n';
    
    return 0;
}

코드가 훨씬 보기 좋아졌고 효율적이다.

``*``로 초기화 된 크기 ``a``의 문자열 변수 ``tmp``를 세로길이 ``b``만큼 반복한다.

그리고 줄 바꿈을 위해 ``endl``을 쓰는 것이 아닌 ``\n``를 사용해 플러싱 오버헤드를 줄였다.

 

처음 문제를 봤을 때, ``memset``을 통해 배열을 하나 선언한 후 그걸 반복할 생각을 했는데,

문제에 접근하는 사고방식이 달라진 것을 새삼 체감했다.

'Camp > T.I.L.' 카테고리의 다른 글

[TIL #1] 명세  (0) 2024.08.05
[TIL #20] 3진법 뒤집기  (0) 2024.07.22
[TIL #18] 약수의 개수와 덧셈  (0) 2024.07.12
[TIL #17] 가운데 글자 가져오기  (0) 2024.07.11
[TIL #16] 없는 숫자 더하기  (0) 2024.07.10
'Camp/T.I.L.' 카테고리의 다른 글
  • [TIL #1] 명세
  • [TIL #20] 3진법 뒤집기
  • [TIL #18] 약수의 개수와 덧셈
  • [TIL #17] 가운데 글자 가져오기
BVM
BVM
  • BVM
    E:\
    BVM
  • 전체
    오늘
    어제
    • 분류 전체보기 (168)
      • Thoughts (14)
      • Study (69)
        • Japanese (3)
        • C++ & C# (46)
        • Javascript (3)
        • Python (14)
        • Others (3)
      • Play (1)
        • Battlefield (1)
      • Others (11)
      • Camp (73)
        • T.I.L. (57)
        • Temp (1)
        • Standard (10)
        • Challenge (3)
        • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

    • 본 블로그 개설의 목적
  • 인기 글

  • 태그

    C++
    bot
    7계층
    db
    프로그래머스
    Dalamud
    Server
    서버
    IOCP
    docker
    JS
    Python
    베데스다
    Network
    c#
    로깅
    cloudtype
    discord
    Asio
    네트워크 프로그래밍
    스타필드
    암호화
    Selenium
    포인터
    네트워크
    discord py
    OSI
    클라우드
    FF14
    boost
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
BVM
[TIL #19] 사각형 별 찍기
상단으로

티스토리툴바