본문 바로가기
Tech/Coding

백준11320🐨삼각 무늬 - 1 .C

by redcubes 2024. 7. 27.

https://www.acmicpc.net/problem/11320

 

#include <stdio.h>
#include <stdlib.h>

int main() {
    int t;
    scanf("%d", &t);
    
    int *ab = (int *)malloc(t << 1 * sizeof(int));  // t * 2를 t << 1로 변경
    
    for (int i = 0; i < t << 1; i++) {  // t * 2를 t << 1로 변경
        scanf("%d", ab + i);
    }
    
    for (int i = 0; i < t << 1; i += 2) {  // t * 2를 t << 1로 변경
        int a = *(ab + i);
        int b = *(ab + i + 1);
        int result = (a / b) * (a / b);
        printf("%d\n", result);
    }
    
    free(ab);
    return 0;
}

 

코드 설명

헤더 파일 포함

#include <stdio.h>
#include <stdlib.h>

표준 입출력 함수와 동적 메모리 할당 함수를 사용하기 위해 stdio.hstdlib.h를 포함한다.

메인 함수

int main() {

모든 C 프로그램의 시작점인 main 함수이다.

변수 선언 및 입력

    int t;
    scanf("%d", &t);

테스트 케이스의 수를 저장할 변수 t를 선언하고 표준 입력을 통해 그 값을 읽어온다.

동적 메모리 할당

    int *ab = (int *)malloc(t << 1 * sizeof(int));

입력된 수를 저장할 동적 배열을 선언한다. t개의 테스트 케이스에 대해 각 케이스마다 두 개의 정수를 입력받기 때문에 t * 2 크기의 배열을 할당한다. 여기서 t * 2는 비트 시프트 연산 t << 1로 대체된다.

입력 값 저장

    for (int i = 0; i < t << 1; i++) {
        scanf("%d", ab + i);
    }

반복문을 사용하여 t * 2 개의 정수를 표준 입력으로부터 읽어와 배열 ab에 저장한다. 반복문의 종료 조건에서 t * 2는 비트 시프트 연산 t << 1로 대체된다.

계산 및 출력

    for (int i = 0; i < t << 1; i += 2) {
        int a = *(ab + i);
        int b = *(ab + i + 1);
        int result = (a / b) * (a / b);
        printf("%d\n", result);
    }

반복문을 사용하여 배열의 요소를 두 개씩 읽어온다. 첫 번째 수를 a에, 두 번째 수를 b에 저장한다. ab로 나눈 결과를 제곱하여 result에 저장하고, 이를 표준 출력으로 출력한다. 반복문의 종료 조건에서 t * 2는 비트 시프트 연산 t << 1로 대체된다.

메모리 해제

    free(ab);
    return 0;
}

동적 메모리 할당을 통해 할당된 메모리를 free 함수를 사용하여 해제한다. 프로그램이 성공적으로 종료되면 0을 반환한다.