이 랩에서는 C 프로그래밍 언어를 사용하여 숫자가 완전 제곱수인지 판별하는 방법을 배우게 됩니다. 완전 제곱수 (perfect square) 는 정수를 자기 자신과 곱하여 표현할 수 있는 숫자입니다. 예를 들어, 16 은 4 × 4 와 같으므로 완전 제곱수이고, 25 는 5 × 5 와 같으므로 완전 제곱수입니다.
이 랩을 마치면 완전 제곱수의 개념을 이해하고, 사용자가 제공한 숫자가 완전 제곱수인지 여부를 확인하는 C 프로그램을 작성할 수 있게 됩니다.
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 고급 레벨의 실험이며 완료율은 42%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.
완전 제곱수 이해하기
코딩을 시작하기 전에, 완전 제곱수가 무엇인지, 그리고 숫자가 완전 제곱수인지 어떻게 판별할 수 있는지 이해해 봅시다.
완전 제곱수 (perfect square) 는 정수의 제곱인 숫자입니다. 즉, n²으로 쓸 수 있는 숫자이며, 여기서 n 은 정수입니다.
완전 제곱수의 예:
1 = 1² (1 × 1)
4 = 2² (2 × 2)
9 = 3² (3 × 3)
16 = 4² (4 × 4)
25 = 5² (5 × 5)
숫자가 완전 제곱수인지 판별하려면, 제곱이 주어진 숫자와 같은 정수가 존재하는지 확인할 수 있습니다.
프로젝트를 위한 디렉토리를 만들고 해당 디렉토리로 이동해 보겠습니다.
mkdir -p ~/project/perfect-square
cd ~/project/perfect-square
이제 프로그램에 사용할 새로운 C 파일을 만들어 보겠습니다.
WebIDE 에서 왼쪽의 파일 탐색기 패널로 이동합니다.
perfect-square 폴더를 마우스 오른쪽 버튼으로 클릭하고 "New File"을 선택합니다.
파일 이름을 perfect_square.c로 지정하고 Enter 키를 누릅니다.
기본 프로그램 구조 생성
이제 C 프로그램의 기본 구조를 만들어 보겠습니다. 필요한 헤더 파일을 포함하고 main 함수를 설정해야 합니다.
파일 탐색기 패널에서 perfect_square.c 파일을 클릭하여 WebIDE 에서 엽니다. 그런 다음 다음 코드를 추가합니다.
#include <stdio.h>
int main() {
int number;
// Prompt user for input
printf("Enter a number to check if it's a perfect square: ");
scanf("%d", &number);
// We will add code to check for perfect square in the next step
return 0;
}
코드를 이해해 봅시다.
#include <stdio.h> - 이 코드는 printf 및 scanf와 같은 함수를 제공하는 표준 입출력 라이브러리를 포함합니다.
int main() - 이것은 프로그램 실행이 시작되는 main 함수입니다.
int number; - 사용자 입력을 저장하기 위해 정수 변수를 선언합니다.
printf("Enter a number..."); - 사용자에게 프롬프트를 표시합니다.
scanf("%d", &number); - 사용자로부터 정수 입력을 읽어 number 변수에 저장합니다. & 연산자는 입력이 저장될 변수의 메모리 주소를 가져오는 데 사용됩니다.
Ctrl+S 를 누르거나 File > Save 를 클릭하여 파일을 저장합니다.
완전 제곱수 검사 알고리즘 구현
이제 사용자가 입력한 숫자가 완전 제곱수인지 확인하는 로직을 구현해 보겠습니다. 숫자가 완전 제곱수인지 확인하는 방법에는 여러 가지가 있습니다. 1 부터 숫자까지의 정수 중 제곱이 숫자와 같은 정수가 있는지 확인하는 간단한 접근 방식을 사용합니다.
perfect_square.c 파일을 다음 코드로 업데이트합니다.
#include <stdio.h>
int main() {
int number;
int isPerfectSquare = 0; // Flag to indicate if number is perfect square
// Prompt user for input
printf("Enter a number to check if it's a perfect square: ");
scanf("%d", &number);
// Check if number is negative
if (number < 0) {
printf("%d is negative, and negative numbers cannot be perfect squares.\n", number);
return 0;
}
// Check if the number is a perfect square
for (int i = 0; i <= number; i++) {
if (i * i == number) {
isPerfectSquare = 1;
printf("%d is a perfect square. It is %d squared.\n", number, i);
break; // Exit the loop once we find the answer
}
// Optimization: If i*i exceeds number, no need to check further
if (i * i > number) {
break;
}
}
// If not a perfect square, inform the user
if (isPerfectSquare == 0) {
printf("%d is not a perfect square.\n", number);
}
return 0;
}
새로운 코드를 이해해 봅시다.
숫자가 완전 제곱수인지 확인했는지 추적하기 위해 isPerfectSquare 플래그를 추가했습니다.
음수는 완전 제곱수가 될 수 없으므로 숫자가 음수인지 확인합니다.
for 루프를 사용하여 0 부터 숫자까지 반복합니다.
루프 내부에서 i * i가 숫자와 같은지 확인합니다. 그렇다면 플래그를 설정하고 메시지를 출력한 다음 루프를 종료합니다.
최적화를 추가했습니다. i * i가 숫자를 초과하면 이후의 모든 값도 숫자를 초과하므로 더 이상 확인할 필요가 없습니다.
마지막으로, 플래그가 여전히 0 이면 사용자에게 숫자가 완전 제곱수가 아님을 알립니다.
파일을 저장합니다 (Ctrl+S 또는 File > Save).
프로그램 컴파일 및 테스트
이제 완전 제곱수를 확인하는 코드를 완성했으므로 컴파일하고 테스트해 보겠습니다. GCC 컴파일러를 사용하여 C 프로그램을 컴파일합니다.
코드가 포함된 디렉토리로 이동합니다 (아직 이동하지 않은 경우).
cd ~/project/perfect-square
프로그램을 컴파일합니다.
gcc perfect_square.c -o perfect_square
이 명령은 perfect_square.c를 컴파일하고 perfect_square라는 실행 파일을 생성합니다. 컴파일이 성공하면 아무런 출력도 표시되지 않습니다.
이제 프로그램을 실행해 보겠습니다.
./perfect_square
프로그램은 숫자 입력을 요청합니다. 다양한 입력을 사용하여 테스트해 보겠습니다.
16 과 같은 완전 제곱수를 입력합니다.
출력은 다음과 같아야 합니다: 16 is a perfect square. It is 4 squared.
10 과 같은 완전 제곱수가 아닌 숫자를 입력합니다.
출력은 다음과 같아야 합니다: 10 is not a perfect square.
-4 와 같은 음수를 입력합니다.
출력은 다음과 같아야 합니다: -4 is negative, and negative numbers cannot be perfect squares.
다양한 입력을 사용하여 테스트하기 위해 프로그램을 여러 번 실행할 수 있습니다.
또한 경계값인 숫자 0 을 시도해 보겠습니다.
./perfect_square
프롬프트가 표시되면 0 을 입력합니다.
출력은 다음과 같아야 합니다: 0 is a perfect square. It is 0 squared.
축하합니다! 숫자가 완전 제곱수인지 확인하는 C 프로그램을 성공적으로 만들었습니다.
요약
이 랩에서는 숫자가 완전 제곱수인지 판별하는 C 프로그램을 만드는 방법을 배웠습니다. 다음은 다룬 주요 개념입니다.
완전 제곱수는 정수의 제곱으로 표현될 수 있는 숫자입니다.
변수, 조건문 및 루프를 포함한 기본적인 C 프로그래밍 개념.
scanf를 사용하여 사용자 입력을 받고 printf를 사용하여 출력을 표시합니다.
각 가능한 값을 테스트하여 숫자가 완전 제곱수인지 확인하기 위해 루프를 사용합니다.
필요한 경우 루프를 중단하여 솔루션을 최적화합니다.
음수 및 0 과 같은 경계값 처리.
이 랩에서는 수학적 개념을 프로그래밍에서 구현하는 방법을 보여주었습니다. 주어진 숫자 다음의 완전 제곱수를 찾거나 숫자가 제곱 (n²) 대신 세제곱 (n³) 인지 확인하는 등 더 많은 기능을 추가하여 이 프로그램을 확장할 수 있습니다.