using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using Unity.VisualScripting;
using UnityEngine;
public class HelloWorld : MonoBehaviour
{
void Start()
{
//Debug.Log("문제 1 ======================================");
// 변수 a에 초기값, 변수 b에 공비를 저장한 후 등비수열 10항 출력
//int a = 3;
//int b = 2;
//for (int i = 1; i <= 10; i++)
//{
// Debug.Log(a *= b);
//}
// ◎◎◎ 풀이 ◎◎◎
// int a = 3;
// int b = 2;
// for(int i = 0; i < 9; i++)
// {
// a *= b;
// Debug.Log(a);
// }
//Debug.Log("문제 2 ======================================");
// 2차원 가변배열을 만들어 정수(랜덤) 저장.
// 그 가변배열에 저장된 수 중, 10이 넘는 수만 골라 리스트 채움
//int[][] myList = new int[3][];
//myList[0] = new int[] { 7, 9, 11, 13, 15, 17, 19 };
//myList[1] = new int[] { 435, 25, 38, 50, 1, 5, 3, 7 };
//myList[2] = new int[] { 54, 8, 4, 21, 98, 55, 77, 10 };
//Debug.Log(myList[0][2]);
//Debug.Log(myList[1][2]);
//Debug.Log(myList[2][0]);
// ◎◎◎ 풀이 ◎◎◎
// int[][] myList = new int[3][]; // 배열을 저장할 수 있는 리스트
// List<int> myList2 = new List<int>(); // int 정수를 저장할 수 있는 리스트
// myList[0] = new int[] { 7, 9, 11, 13, 15, 17, 19 };
// myList[1] = new int[] { 435, 25, 38, 50, 1, 5, 3, 7 };
// myList[2] = new int[] { 54, 8, 4, 21, 98, 55, 77, 10 };
// foreach(int[] numbers in myList) // myList에 있는 배열들을 'numbers' 라는 이름으로 하나씩 가져온다.
// {
// foreach(int number in numbers) // numbers 배열 안에 있는 숫자들을 'number' 라는 이름으로 하나씩 가져온다.
// {
// if(number > 10)
// {
// b.Add(bumber); // 10이 넘는 숫자들을 b에 저장한다.
// }
// }
// }
//
// foreach(int n in b)
// {
// Debug.Log(n); // b에서 가지고 온 n을 하나씩 출력
// }
//Debug.Log("문제 3 ======================================");
// 문제 3. 크기 10의 정수 배열을 만들고 원하는 수를 넣어 초기화
// 그 배열에 저장된 수의 순서를 뒤집는다.
//List<int> ints = new List<int>
//{
// 10, 20, 30, 40, 50, 60, 70, 80, 90 , 100
//};
//for (int i = ints.Count - 1; i >= 0; i--)
//{
// Debug.Log(ints[i]);
//}
// ◎◎◎ 풀이 ◎◎◎
// int[] a = { 10, 20, 30, 40, 50, 60, 70, 80, 90, 100 } // 임의로 내가 정한 수
// for(int i = 0; i < a.length / 2; i++) // a의 반만 반복
// {
// int i2 = a.length - i - 1; // 0 ~ 9 순으로 반복하는 것과는 달리, 9 ~ 0 순으로 반복
// }
// int temp = a[i];
// a[i] = a[i2];
// a[i2] = tmep; // 두 개의 값의 위치를 바꾸는 방법 ( => 두 변수의 값을 수합한다 는 표현을 씀)
// foreach(int n in a)
// {
// Debug.Log(n);
// }
//Debug.Log("문제 4 ======================================");
// 5x5 크기의 bool 2차원 배열을 만든다.
// a[i, j] 라고 했을 때, i가 더 클 때는 true, j가 더 클 때는 false 넣어 배열 채움
//bool[,] numbers = new bool[5,5];
//for(int i = 0; i < 5; i++)
//{
// for(int j = 0; j < 5; j++)
// {
// if (numbers. > nubers.j)
// {
// }
// }
//}
// ◎◎◎ 풀이 ◎◎◎
// bool[,] a = new bool[5, 5]; // 2차원 배열을 만들어줌과 동시에 초기화
// for(int i = 0; i < 5; i++)
// {
// for(int j = 0; j < 5; j++)
// {
// if(i > j)
// {
// a[i, j] = true;
// }
// else
// {
// a[i, j] = false;
// }
// }
// }
// Debug.Log("문제 5 ======================================");
// 1 ~ 1000까지의 수 중에, 0과 5로만 이루어진 수를 찾아 리스트에 넣고 출력
// ◎◎◎ 풀이 ◎◎◎
// 방법 1.
//List<int> result = new List<int>();
//for (int i = 0; i <= 1000; i++)
//{
// int n1 = i % 10; // 1의 자리수
// if (n1 == 0 || n1 == 5)
// {
// int n10 = (i / 10) % 10; // 10의 자리수
// if (n10 == 0 || n10 == 5)
// {
// int n100 = (i / 100) % 10; // 100의 자리수
// if (n100 == 0 || n100 == 5)
// {
// if (i != 1000)
// {
// result.Add(i);
// }
// }
// }
// }
//}
//foreach (int n in result)
//{
// Debug.Log(n);
//}
// 방법 2.
//List<int> result = new List<int>();
//for (int i = 1; i <= 1000; i++)
//{
// int i2 = i;
// bool isFiveOrZero = true;
// while (i2 > 0)
// {
// if (i2 % 10 != 0 && i2 % 10 != 5)
// {
// isFiveOrZero = false;
// break;
// }
// i2 /= 10;
// }
// if (isFiveOrZero)
// {
// result.Add(i);
// }
//}
//foreach (int n in result)
//{
// Debug.Log(n);
//}
//Debug.Log("문제 6 ======================================");
// [몬스터 이름 : 경험치 숫자]로 이루어진 Dictionary의 Dictionary를 만들어 원하는 수의 데이터를 넣는다.
// 모든 몬스터들 경험치의 평균을 출력
//Dictionary<string, int> monster = new Dictionary<string, int>();
//monster.Add("각다귀", 3000);
//monster.Add("거머리", 5000);
//monster.Add("차오차오", 1000);
//monster.Add("무신의혼", 6000);
//monster.Add("도굴꾼", 4000);
// ◎◎◎ 풀이 ◎◎◎
//Dictionary<string, int> monsters = new Dictionary<string, int>();
//int sum = 0;
//monsters.Add("각다귀", 3000);
//monsters.Add("거머리", 5000);
//monsters.Add("차오차오", 1000);
//monsters.Add("무신의혼", 6000);
//monsters.Add("도굴꾼", 4000);
//foreach (KeyValuePair<string, int> monster in monsters)
//{
// sum += monster.Value;
//}
//Debug.Log(sum / monsters.Count);
//Debug.Log("문제 7 ======================================");
//// 서로 다른 뜻을 가진 [한국어 : 영어단어]의 Dictionary를 만들어서 5갸의 데이터를 삽입한다.
//// 그 Dictionary를 [영어단어 : 한국어]로 바꾼다.
//// ◎◎◎ 풀이 ◎◎◎
//Dictionary<string, string> wordKrEn = new Dictionary<string, string>();
//Dictionary<string, string> wordEnKr = new Dictionary<string, string>();
//wordKrEn.Add("책", "book");
//wordKrEn.Add("고양이", "cat");
//wordKrEn.Add("개", "dog");
//wordKrEn.Add("태양", "sun");
//wordKrEn.Add("달", "moon");
//foreach (KeyValuePair<string, string> entry in wordKrEn)
//{
// wordEnKr[entry.Value] = entry.Key; // KrEn의 데이터를 하나하나 가져와서 EnKr에다가 넣어야 하므로(KrEn -> EnKr)
//}
//foreach (string key in wordEnKr.Keys) // wordEnKr의 키값들 중 string 키값
//{
// Debug.Log(key + " : " + wordEnKr[key]);
//}
//Debug.Log("문제 8 ======================================");
//// 2 x 2크기의 2차원 배열 2개를 만들어서 정수저장
//// 각 배열을 행렬이라 생각하면 행렬의 합과 행렬의 곱을 계산
//// ◎◎◎ 풀이 ◎◎◎
//int[,] a =
//{
// { 1, 2, 3, 4}
//};
//int[,] b =
//{
// { 4, 3, 2, 1}
//};
//// 결과를 저장할 행렬
//int[,] c = new int[2, 2]; // int c에다가 a와 b의 합
//int[,] d = new int[2, 2]; // int d에다가 a와 b의 곱
//// c는 a행렬과 b행렬의 합이 들어가게 됨
//c[0, 0] = a[0, 0] + b[0, 0];
//c[0, 1] = a[0, 1] + b[0, 1];
//c[1, 0] = a[1, 0] + b[1, 0];
//c[1, 1] = a[1, 1] + b[1, 1];
//// d는 a행렬과 b행렬의 곱이 들어가게 됨
//d[0, 0] = a[0, 0] * b[0, 0] + a[0, 1] * b[1, 0];
//d[0, 1] = a[0, 0] * b[0, 1] + a[0, 1] * b[1, 1];
//d[1, 0] = a[1, 0] * b[0, 0] + a[1, 1] * b[1, 0];
//d[1, 1] = a[1, 0] * b[0, 1] + a[1, 1] * b[1, 1];
//Debug.Log("문제 9 ======================================");
// 3 x 3 크기의 2차원 배열 2개 만들어서 정수를 저장
// 각 배열을 3 x 3행렬이라 생각하고 행렬의 합과 곱을 계산하되, 반드시 for 문 사용
// ◎◎◎ 풀이 ◎◎◎
//int[,] a =
//{
// { 1, 2, 3 },
// { 3, 4, 5 },
// { 5, 6, 7 }
//};
//int[,] b =
//{
// { 4, 5, 1 },
// { 9, 5, 3 },
// { 7, 8, 2 }
//};
////// 결과를 저장할 행렬
//int[,] c = new int[3, 3]; // int c에다가 a와 b의 합
//int[,] d = new int[3, 3]; // int d에다가 a와 b의 곱
//int size = 3; // 반복해서 같은 숫자를 쓰지 않을 수 있도록 변수를 넣어둠
//// 행렬의 합
//for(int i = 0; i < size; i++)
//{
// for(int j = 0; j < size;)
// {
// c[i, j] = a[i, j] + b[i, j];
// }
//}
//// 행렬의 곱
//for (int i = 0; i < size; i++)
//{
// for (int j = 0; j < size; j++)
// {
// for (int k = 0; k < size; k++)
// {
// d[i, j] += a[i, k] * b[k, j];
// }
// }
//}
//Debug.Log("문제 10 ======================================");
// 1차원 정수 배열에 수를 채우고
// 그 수를 작은 수부터 큰 수 순으로 정렬
// ◎◎◎ 풀이 ◎◎◎
//int[] a = { 7, 9, 10, 14, 1, 54, 8, 3, 44, 2 };
//for (int i = 0; i < a.Length - 1; i++)
//{
// for(int j = i + 1; j < a.Length; j++)
// {
// if (a[i] > a[j]) // i가 앞쪽인데, i가 j보다 크면 위치를 바꿔야 됨
// {
// int temp = a[i];
// a[i] = a[j];
// a[j] = temp;
// }
// }
//}
//foreach (int n in a)
//{
// Debug.Log(n);
//}
//Debug.Log("문제 11 ======================================");
// 정수의 리스트를 만들고 리스트를 작은 수부터 큰 수 순으로 정렬
// ◎◎◎ 풀이 ◎◎◎
List<int> a = new List<int> { 7, 9, 10, 14, 1, 54, 8, 3, 44, 2 };
for (int i = 0; i < a.Count - 1; i++)
{
int min = a[i]; // 제일 작은 수 축출
int minIndex = i; // 그리고 뽑은 제일 작은 수의 위치를 기억
for (int j = i + 1; j < a.Count; j++) // 그리고 돌면서 i의 다음 수부터 끝까지 감
{
if (a[j] < min) // 현재까지 저장되어 있는 가장 작은 수보다 더 작은지를 체크
{
min = a[j]; // 최소값 교체 및 저장
minIndex = j; // 그 최소값이 어디있는지 저장
}
}
a.RemoveAt(minIndex); // min에는 가장 작은 수가 저장되어 있을 것이고, 그 작은 수의 위치는 minIndex가 알고 있을 것. 그걸 뽑아낸다.
a.Insert(i, min); // 그 작은 값을 맨 앞에 삽입.
}
foreach (int n in a)
{
Debug.Log(n);
}
}
}
카테고리 없음
댓글