최대값, 최소값 찾기
사용자로부터 일련의 숫자 5개를 입력받아, 그 중에서 최대값과 최소값을 찾는 프로그램 작성하시오.
<나의 풀이 과정>
int[] num = new int[5]; // 사용자에게 입력 받을 배열 초기화
int max = num[0]; // 초기화
int min = num[0]; // 초기화
for (int i = 0; i < 5; i++) // 0~4 인덱스 안의 숫자 비교
{
Console.Write("숫자를 입력하세요: ");
num[i] = int.Parse(Console.ReadLine()); // 사용자에게 입력 받기
if (num[i] > max) // num[i]가 max보다 크다면
{
max = num[i];
}
if (num[i] < min) // num[i]가 min보다 작다면
{
min = num[i];
}
}
Console.WriteLine("최대값: " + max);
Console.WriteLine("최소값: " + min);
초기화가 min이 초기화 된 상태인 0의 값으로 비교되므로 늘 최소값이 0으로 나오게 된다.
int[] num = new int[5];
for (int i = 0; i < 5; i++)
{
Console.Write("숫자를 입력하세요: ");
num[i] = int.Parse(Console.ReadLine());
}
int max = num[0];
int min = num[0];
for (int i = 0;i < 5; i++)
{
if (num[i] > max)
{
max = num[i];
}
if (num[i] < min)
{
min = num[i];
}
}
Console.WriteLine("최대값: " + max);
Console.WriteLine("최소값: " + min);
사용자가 입력한 숫자를 for문을 통해 5회 반복하여 배열에 넣어준 뒤, 또다시 for문을 통해 5개의 숫자를 비교한다.
소수 판별하기
주어진 숫자가 소수인지 판별하는 함수와 코드를 만드시오.
<나의 풀이 과정>
// 주어진 숫자가 소수인지 판별하는 함수
static bool IsPrime(int num)
{
if (num <= 1) // 1보다 작거나 같으면 소수가 아니다
{
return false;
}
for (int i = 2; i < num; i++) // 2보다 크고 자기 자신과 같은 숫자가 되기 전까지 1씩 증가
{
if (num % i == 0) // 나누어 떨어지면 소수가 아니다
{
return false;
}
}
return true; // 소수
}
static void Main()
{
Console.Write("숫자를 입력하세요: "); // 사용자에게 숫자 입력 요청
int num = int.Parse(Console.ReadLine()); // 사용자가 입력한 값을 정수로 변환하여 저장
if (IsPrime(num)) // 입력 받은 숫자가 소수라면
{
Console.WriteLine(num + "은 소수입니다."); // 소수임을 출력
}
else // 소수가 아니라면
{
Console.WriteLine(num + "은 소수가 아닙니다."); // 소수가 아님을 출력
}
}
이렇게 하면 작은 수일 때는 괜찮지만 큰 수를 입력했을 때 메모리를 많이 잡아먹게 된다.
static bool IsPrime(int num)
{
if (num <= 1)
{
return false;
}
for (int i = 2; i <= num / 2; i++) // 2부터 자기 자신의 절반까지만 확인
{
if (num % i == 0)
{
return false;
}
}
return true;
}
약수는 자기 자신을 제외하면 절반까지가 최대이기 때문에 2로 나눠주면 메모리 사용량을 줄일 수 있다. 그러나 49, 81 등 제곱된 수의 약수는 절반까지 도달하지 않아도 소수가 아님을 확인 할 수 있다.
static bool IsPrime(int num)
{
if (num <= 1)
{
return false;
}
for (int i = 2; i * i <= num; i++) // 2부터 숫자의 제곱근까지만 확인
{
if (num % i == 0)
{
return false;
}
}
return true;
}
숫자 맞추기
컴퓨터는 1에서 100까지의 숫자를 임의로 선택하고, 사용자는 이 숫자를 맞춘다. 사용자가 입력한 숫자가 컴퓨터의 숫자보다 크면 "너무 큽니다!"라고 알려주고, 작으면 "너무 작습니다!"라고 알려준다. 사용자가 숫자를 맞출 시, 게임 종료.
Random random = new Random();
int numberToGuess = random.Next(1, 101);
int userNum = 0;
int numberTry = 0;
bool playAgain = true;
Console.WriteLine("숫자 맞추기 게임을 시작합니다. 1에서 100까지의 숫자 중 하나를 맞춰보세요.");
while (playAgain)
{
while (numberToGuess != userNum)
{
Console.Write("숫자를 입력하세요: ");
userNum = Convert.ToInt32(Console.ReadLine());
if (numberToGuess > userNum)
{
Console.WriteLine("너무 작습니다!");
}
else if (numberToGuess < userNum)
{
Console.WriteLine("너무 큽니다!");
}
numberTry++;
}
Console.WriteLine("축하합니다! {0}번 만에 숫자를 맞추었습니다.", numberTry);
playAgain = false;
}
틱택토(콘솔)
<나의 풀이 과정>
'부트캠프 > Study' 카테고리의 다른 글
C# 문법 3강(2) - 상속과 다형성 (0) | 2023.11.08 |
---|---|
C# 문법 3강(1) - 클래스와 객체 (0) | 2023.11.08 |
C# 문법 2강(3) - 메서드와 오버로드, 구조체 (0) | 2023.11.07 |
C# 문법 2강(2) - 배열 / 리스트(컬렉션) (0) | 2023.11.07 |
C# 문법 2강(1) - 조건문 / 반복문 (0) | 2023.11.07 |