작성일 :

문제 링크

27246번 - Различные квадраты

설명

간단한 수학과 구현에 대한 문제입니다.

문제의 목표는 입력으로 주어지는 n 개의 단위 정사각형을 이용하여, 가능한 다양한 크기의 정사각형을 만드는 것입니다.

이 때, 한 변의 길이가 k 인 정사각형을 만들기 위해서는 k2 개의 단위 정사각형이 필요합니다.

따라서, 위 내용에 대해 적절히 구현을 진행하면 문제를 해결할 수 있습니다.

주의해야 할 점은 문제에서 입력으로 주어지는 n 의 범위가 크므로, 64 비트 데이터를 담을 수 있는 자료형이 필요하다는 것 입니다.


Code

[ C# ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
namespace Solution {
  class Program {
    static void Main(string[] args) {

      var n = long.Parse(Console.ReadLine()!);

      var maxSquares = 0L;
      var k = 1L;
      while (n >= k * k) {
        n -= k * k;
        maxSquares++;
        k++;
      }

      Console.WriteLine(maxSquares);

    }
  }
}



[ C++ ]

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

using namespace std;

typedef long long ll;

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

  ll n; cin >> n;

  ll maxSquares = 0, k = 1;
  while (n >= k * k) {
    n -= k * k;
    maxSquares++;
    k++;
  }

  cout << maxSquares << "\n";

  return 0;
}