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.h
와 stdlib.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
에 저장한다. a
를 b
로 나눈 결과를 제곱하여 result
에 저장하고, 이를 표준 출력으로 출력한다. 반복문의 종료 조건에서 t * 2
는 비트 시프트 연산 t << 1
로 대체된다.
메모리 해제
free(ab);
return 0;
}
동적 메모리 할당을 통해 할당된 메모리를 free
함수를 사용하여 해제한다. 프로그램이 성공적으로 종료되면 0
을 반환한다.
'Tech > Coding' 카테고리의 다른 글
백준3015🐨오아시스 재결합.py (0) | 2024.07.30 |
---|---|
백준17298🐨오큰수.py .c + 백준17299🐨오등큰수.py (0) | 2024.07.28 |
백준2293🐨동전 1 (0) | 2024.07.21 |
백준4158🐨CD - 집념의 이터레이션 feat. map은 메모리를 먹는다. (2) | 2024.07.18 |
백준20361🐨일우는 야바위꾼.py (0) | 2024.07.18 |