문자열

★ 단축키

코드를 드래그하고
Ctrl + K, Ctrl + C: 주석 처리
Ctrl + K, Ctrl + U: 주석 해제
Ctrl + K. Ctrl + D: 자동 정렬


● var 키워드

초기화하는 값의 자료형에 따라 변수의 자료형이 결정
변수를 사용하는 시점에서 변수의 자료형을 정확히 알 수 없는 경우 유용하게 사용
ex)

var num = 10;         // int 자료형으로 결정됨
var name = "kero";   // string 자료형으로 결정됨
var pi = 3.141592;    // double 자료형으로 결정됨

● 분할

string str = "Hello, World!";
string[] words = str.Split(','); // ,를 기준으로 분할 후 배열에 저장

Console.WriteLine(words[0]);
Console.WriteLine(words[1]);

출력
Hello
 World! // ,기준이라 띄어쓰기도 포함

● 검색

string str = "Hello, World!";
int index = str.IndexOf("World"); // World의 첫 번째 인덱스(첫 글자)가 몇 번째 위치에 있는지 알려줌 

Console.WriteLine(index);

출력
7 // 0부터 세기 시작 -> W는 7번째에 있다.

● 대체

string str = "Hello, World!";
string newStr = str.Replace("World", "Universe"); // Wolrd대신 Universe로 대체되어서 출력

Console.WriteLine(newStr);

출력
Hello, Universe!

● 변환

string str5 = "123"; // 문자형 123
int num = int.Parse(str5); // 숫자형으로 전환
Console.WriteLine(num); // 숫자형 123

num += 10;

Console.WriteLine(num.ToString()); // 문자형으로 전환 후 출력
Console.WriteLine(str1 == str2); // Hello 와 World!는 다르다
Console.WriteLine(string.Compare(str1, str2)); // 문자열 대소 비교

// compare = -1 -> str1 < str2
0 -> str1 == str2
1 -> str1 > str2

// 아무 옵션도 설정하지 않고 비교하는 경우 
문자열을 사전식으로 비교하며 대소문자를 구분
즉, ‘A’는 ‘a’보다 작다.

출력
123
133
False
-1

● 포멧팅

Console.WriteLine(num.ToString());
Console.WriteLine(str1 == str2);
Console.WriteLine(string.Compare(str1, str2));

string name = "John";
int age = 30;

// 2가지 방법으로 출력 가능
//형식화 (Format)
string message = string.Format("My name is {0} and I'm {1} years old.", name, age);
Console.WriteLine(message);
//문자열 보간 ($)
message = $"My name is {name} and I'm {age} years old.";
Console.WriteLine(message);

출력
My name is Jone and I'm 30 years old.
My name is Jone and I'm 30 years old.

● 제곱근

double BMI = weight / (Math.Pow(height,2)); // BMI = 몸무게(kg) / (키(m)^2)
// 자료형이 double이어야 함

● 인덱싱

char alpha = Console.ReadLine()[0]; // 문자열에서 0번째 문자를 가져와라

반복문

● for

for (int i = 0; i < 10; i++) // i가 1씩 증가
for (int i = 0; i < 10; i += 2) // i가 2씩 증가
while (true) // 항상 참이니 무한 루프 , for(;;) -> 무한 루프

for (int i = 1; i <= 10; i++)
{
    if (i % 3 == 0)
    {
        continue; // 3의 배수인 경우 다음 숫자로 넘어감
    }

    Console.WriteLine(i);
    if (i == 7)
    {
        break; // 7이 출력된 이후에는 반복문을 빠져나감
    }
}
 
출력
1
2
4
5
7

배열

Random random = new Random();  // 랜덤 객체 생성
int sum = 0;
double average = (double)sum / scores.Length; // sum앞에 (double)을 붙여 double 자료형으로 바꿈

● 다차원 배열

(공용 문장)int[,] array3 = new int[2,3]; // 2행 3열의 int형 2차원 배열 선언

array3[0,0] = 1; // 초기화     
array3[0,1] = 2;         
array3[0,2] = 3;         {1, 2, 3},
array3[1,0] = 4;	->	 {4, 5, 6}
array3[1,1] = 5;
array3[1,2] = 6;
-------------------------------------------------
        static void Main(string[] args)
        {
            int[,] map = new int[5, 5]
            {
    { 1, 1, 1, 1, 1 },
    { 1, 0, 0, 0, 1 },
    { 1, 0, 1, 0, 1 },
    { 1, 0, 0, 0, 1 },
    { 1, 1, 1, 1, 1 }
            };

            for (int i = 0; i < 5; i++)
            {
                for (int j = 0; j < 5; j++)
                {
                    if (map[i, j] == 1)
                    {
                        Console.Write("■ ");
                    }
                    else
                    {
                        Console.Write("□ ");
                    }
                }
                Console.WriteLine();
            }
        }
출력
■ ■ ■ ■ ■
■ □ □ □ ■
■ □ ■ □ ■
■ □ □ □ ■
■ ■ ■ ■ ■

● List

  • List는 가변적인 크기를 갖는 배열
  • List는 Length를 사용하지 못함, 대신 count를 이용하여 반복문에 사용
  • 배열보다 접근 속도가 느림
List<int> numbers = new List<int>(); // 빈 리스트 생성
numbers.Add(1); // 리스트에 데이터 추가
numbers.Add(2);
numbers.Add(3);
numbers.Remove(2); // 리스트에서 데이터 삭제

출력하는 방법 2가지
1.
for (int i = 0; i < numbers.Count; i++)
{
	Console.WriteLine(numbers[i]);
}

2.
foreach(int number in numbers) // 리스트 데이터를 순서대로 하나씩 출력
{
    Console.WriteLine(number);
}
1, 2번 출력
1
3

메서드와 구조체

● 메서드

  • 메서드는 일련의 코드 블록으로, 특정한 작업을 수행하기 위해 사용되는 독립적인 기능 단위
  • 필요한 곳에서 메서드를 호출하여 재사용할 수 있음
  • 중복 코드 제거, 코드 길이 줄임, 가독성과 유지보수성을 향상 시킴
//1) 매개변수의 개념과 활용
static void PrintFullName(string firstName, string lastName)
{
    Console.WriteLine("Full Name: " + firstName + " " + lastName);
}

// 메서드 호출
static void Main(string[] args)
{
	PrintFullName("John", "Doe");
}
출력
Full Name: John Doe

//2) 반환값의 개념과 활용
static int AddNumbers(int a, int b) // 반환값은 메서드의 리턴 타입에 지정되며, 해당 타입의 값을 반환
{
	int sum = a + b;
	return sum;
}

static void Main(string[] args)
{
	// 메서드 호출 및 반환값 사용
	int result = AddNumbers(10, 20);
	Console.WriteLine("Sum: " + result);
}
출력
Sum: 30

● 오버로딩

  • 매개변수의 개수, 타입, 순서가 다른 여러 메서드를 동일한 이름으로 정의하여
    메서드 호출 시 매개변수의 형태에 따라 적절한 메서드가 선택
  • 오버로딩은 메서드의 기능이나 작업은 동일하지만 입력값에 따라
    다르게 동작해야 할 때 사용
static int AddNumbers(int a, int b)
{
	return a + b;
}

static int AddNumbers(int a, int b, int c)
{
	return a + b + c;
}

static void Main(string[] args)
{
	// 메서드 호출
	int sum1 = AddNumbers(10, 20);  // 두 개의 정수 매개변수를 가진 메서드 호출
	int sum2 = AddNumbers(10, 20, 30);  // 세 개의 정수 매개변수를 가진 메서드 호출
	Console.WriteLine(sum1); // 출력
	Console.WriteLine(sum2);
}
출력
30
60

● 재귀 호출

  • 복잡한 문제를 단순한 방식으로 해결할 수 있지만, 자칫 잘못하면 무한루프에 빠질수 있음
  • 상황에 맞게 잘 사용해야함
static void CountDown(int n)
{
	if (n <= 0)
	{
		Console.WriteLine("Done");
	}
	else
	{
		Console.WriteLine(n); 
		CountDown(n - 1);  // 자기 자신을 호출 , 여기서 반복
	}
}

static void Main(string[] args)
{
	// 메서드 호출
	CountDown(5);
}

출력
5
4
3
2
1
Done

● 구조체

  • 여러 개의 데이터를 묶어서 하나의 사용자 정의 형식으로 만들기 위한 방법
  • 구조체는 값 형식(Value Type)으로 분류되며, 데이터를 저장하고 필요한 기능을 제공
  • 구조체는 struct 키워드를 사용하여 선언
  • 구조체의 멤버는 변수와 메서드로 구성
struct Person
{
    public string Name;
    public int Age;

    public void PrintInfo()
    {
        Console.WriteLine($"Name: {Name}, Age: {Age}");
    }
}

static void Main(string[] args)
{
	Person person1; // int a; 같은 느낌
	person1.Name = "John";
	person1.Age = 25;
	person1.PrintInfo();
}

출력
Name: John, Age: 25

0개의 댓글