Deep Learning through deep learning

백준 23806번 골뱅이 찍기 - ㅁ 본문

Baekjoon_algorithm_heuristic

백준 23806번 골뱅이 찍기 - ㅁ

NeuroN 2023. 2. 2. 11:20

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

코드 해석

더보기
  1. 변수 N 이 정수로 주어짐
  2. 변수 N = 1 이면 가로 세로 (5*5) 크기의 골벵이로 이루어진 사각형이 출력됨
  3. 변수 N이 증가할때마다 가로 세로가 다섯칸씩 늘어나고, 두께도 한칸씩 늘어남
  4. 2중 for문을 사용하고, 첫번째 for문에는 세로 층수를 만들기 위해 (N*5) 만큼 반복하는 반복문을 만들어준다.
  5. 첫번째 for문 안에 조건문을 생성하는데, 조건문의 조건은 사각형의 윗변일때, 밑변일때, 나머지로 3가지 조건으로 나눈다.
  6. 윗변일때와, 밑변일때는 (N*5) 크기만큼 두번째 for반복문으로 골벵이를 채워주면 된다.
  7. 나머지의 경우에는, 좌변 우변에만 두께만큼 두번째 for반복문으로 골벵이를 채워주고, 나머지 사이에는 빈공간에 " "공백으로 채워준다.
  8. 조건문이 다 실행되었으면, 첫번째 for문이 다시 실행되기 전에 줄바꿈을 해준다. 첫번째 for문은 층을 담당하고 있기 때문에 반복될때마다 줄바꿈이 필요하다.

코드

#include <iostream>
#include <math.h>
#include <algorithm>
#include <vector>
using namespace std;

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N; cin >> N;
    for (int i = 0; i < N * 5; i++)
    {
        if (i < N)
        {
            for (int j = 0; j < N * 5; j++)
            {
                cout << "@";
            }
        }
        else if (i >= N * 5 - N)
        {
            for (int j = 0; j < N * 5; j++)
            {
                cout << "@";
            }
        }
        else
        {
            for (int j = 0; j < N; j++)
            {
                cout << "@";
            }
            for (int j = 0; j < N*3; j++)
            {
                cout << " ";
            }
            for (int j = 0; j < N; j++)
            {
                cout << "@";
            }
        }
        cout << endl;
    }

}