작성일 :

문제 링크

26535번 - Chicken Pen

설명

닭 수가 주어질 때, 내부 칸이 충분한 최소 정사각형 울타리를 그리는 문제입니다.


접근법

내부 칸 수가 닭 수 이상이 되도록 최소 한 변 길이를 구합니다. 전체 울타리 크기는 내부 한 변에 2를 더한 값입니다.

이후 첫 줄과 마지막 줄은 모두 x로 채우고, 중간 줄은 양쪽 끝만 x로 두고 내부는 점으로 채워 출력합니다.


Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;

class Program {
  static void Main() {
    var n = int.Parse(Console.ReadLine()!);
    var s = 1;
    while (s * s < n) s++;

    var size = s + 2;
    var border = new string('x', size);
    Console.WriteLine(border);
    for (var i = 0; i < s; i++)
      Console.WriteLine("x" + new string('.', s) + "x");
    Console.WriteLine(border);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <bits/stdc++.h>
using namespace std;

int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr);

  int n; cin >> n;
  int s = 1;
  while (s * s < n) s++;

  int size = s + 2;
  string border(size, 'x');
  cout << border << "\n";
  for (int i = 0; i < s; i++)
    cout << "x" << string(s, '.') << "x\n";
  cout << border << "\n";

  return 0;
}