본문 바로가기

BAEKJOON/수학

백준 11312번 [삼각 무늬-2](C++) -yes6686- 티스토리

728x90
SMALL

백준 문제 풀이: 11312 [삼각 무늬 - 2]


문제 링크: https://www.acmicpc.net/problem/11312

문제 설명:

정사각형 a × a 안에 정사각형 b × b를 최대한 많이 채울 때 들어가는 b × b 정사각형의 개수를 구하는 문제입니다.

즉, a × ab × b로 나눈 몫을 계산합니다.


문제 해결 코드


#include <iostream>
using namespace std;

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

    int T;
    cin >> T; // 테스트 케이스 개수 입력

    while (T--) {
        long long int a, b;
        cin >> a >> b; // 두 정사각형의 변 길이 입력

        long long int A = a * a; // 큰 정사각형의 넓이
        long long int B = b * b; // 작은 정사각형의 넓이

        cout << A / B << '\n'; // 큰 정사각형에 들어갈 수 있는 작은 정사각형 개수 출력
    }

    return 0;
}

예제 입력:

2
10 5
12 3

예제 출력:

4
16

코드 설명

  • 핵심 알고리즘: 간단한 정수 나눗셈을 활용하여 정사각형의 개수를 구합니다.
  • 구현 세부사항:
    • a × a를 계산하여 전체 면적을 구합니다.
    • b × b를 계산하여 작은 정사각형의 면적을 구합니다.
    • 두 면적을 나눈 값 A / B가 정답이 됩니다.
  • 시간 복잡도: O(1), 모든 연산은 상수 시간 내에 수행됨

결과

큰 정사각형 안에 작은 정사각형이 몇 개 들어가는지를 빠르게 계산할 수 있습니다. 간단한 정수 연산을 활용하는 문제로, 기본적인 수학 문제를 연습하기 좋습니다. 추가적인 질문이나 개선 사항이 있다면 댓글로 알려주세요!

728x90
LIST