문제 1
public void Problem1()
{
int length = Convert.ToInt32(Console.ReadLine());
int[] array = new int[length];
string[] elements = Console.ReadLine().Split(' ');
for (int i = 0; i < length; i++)
{
array[i] = Convert.ToInt32(elements[i]);
}
int max = array[0];
for (int i = 1; i < array.Length; i++)
{
if (array[i] > max)
{
max = array[i];
}
}
Console.WriteLine(max);
}
+++
문제2
public void Problem2()
{
int number = Convert.ToInt32(Console.ReadLine());
if (IsPrime(number))
{
Console.WriteLine("Prime");
}
else
{
Console.WriteLine("Not Prime");
}
}
// 소수 판별 함수
static bool IsPrime(int n)
{
if (n <= 1) return false; // 1 이하의 수는 소수가 아님
if (n == 2) return true; // 2는 소수
if (n % 2 == 0) return false; // 2를 제외한 짝수는 소수가 아님
// 제곱근까지만 반복하여 확인
var limit = Math.Sqrt(n);
for (int i = 3; i <= limit; i += 2)
{
if (n % i == 0) return false;
}
return true;
}
+++
문제 3
public void Problem3()
{
string inputString = Console.ReadLine();
char[] charArray = inputString.ToCharArray();
Array.Reverse(charArray);
string reversedString = new string(charArray);
Console.WriteLine(reversedString);
}
+++
문제 4
public void Problem4()
{
int length = Convert.ToInt32(Console.ReadLine());
int[] array = new int[length];
string[] elements = Console.ReadLine().Split(' ');
for (int i = 0; i < length; i++)
{
array[i] = Convert.ToInt32(elements[i]);
}
ReverseArray(array);
foreach (int item in array)
{
Console.Write(item + " ");
}
}
// 배열을 뒤집는 함수
static void ReverseArray(int[] arr)
{
int start = 0;
int end = arr.Length - 1;
while (start < end)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
+++
문제 5
public void Problem5()
{
string input = Console.ReadLine();
// 소문자로 변환하고, 정규 표현식을 사용해 단어만 추출 , @"\b[\w']+\b" -> 정규 표현식
string[] words = Regex.Matches(input.ToLower(), @"\b[\w']+\b") // 단어 경계 내에 위치한 하나 이상의 단어 문자나 작은따옴표가 포함된 문자열
.Cast<Match>()
.Select(match => match.Value)
.ToArray();
Dictionary<string, int> frequency = new Dictionary<string, int>();
foreach (string word in words)
{
if (frequency.ContainsKey(word))
{
frequency[word]++;
}
else
{
frequency[word] = 1;
}
}
foreach (var pair in frequency.OrderBy(p => p.Key))
{
Console.WriteLine($"{pair.Key} : {pair.Value}");
}
}
\b: 단어 경계
[\w']+: 단어문자(알파벳 문자(소,대문자), 숫자, 밑줄(_)
+: 바로 앞의 패턴이 하나 이상 연속으로 등장 가능
'메모장' 카테고리의 다른 글
게임 UI UX 프로그래밍 문제 메모 (0) | 2024.03.26 |
---|---|
게임 클라이언트 문제 메모 (0) | 2024.03.25 |
Unity에서 svg (vector) 형식 이미지 인식 하는 방법 (0) | 2024.03.10 |
이벤트(Event), 이벤트 핸들러(EventHandler), 그리고 이벤트 기반 프로그래밍(Event-driven programming) (0) | 2024.02.26 |
System.Text.RegularExpressions.Regex.IsMatch - 문자열 매칭 메서드 (0) | 2024.02.23 |