[Unity] 코딩 문제로 오니 숨이 트인다!!

2024. 4. 22. 19:23·Record/TIL
목차
  1. [ 구구단 출력하기 ]
  2. [ 별 찍기 ]
  3. [ 최대값, 최소값 찾기 ]
  4. [ 소수 판별하기 ]
  5. [ 숫자 맞추기 ]
  6. [ 틱택토 (콘솔) ]
반응형
서론

 
저번주까지만 해도 유니티 내 UI와 씨름하며 눈물을 흘리던 나는 내 길이 아닌가 고민을 하며 집들이에 가서 술을 마시고 놀았다. 헤헤. 사실 내 길 맞음. 난 여기 없으면 안감. 못감.
그러다 오늘 C# 문법 강의를 듣기 시작했는데 진짜 내가 아는척하고싶어서 엉덩이가 들썩거린건 처음이다...
하... 최고야.. 이게 알고리즘 공부한 맛이지....
물론 비전공자가 많다보니 엄청 기초부터 가르쳐주시는데 나는 진짜 4년내내 듣고, 또 나 혼자 독학으로 공부하면서 보던걸 들으니깐 지루하긴 해도  아는거라서 너무 행복해....
그래서 더 열심히 하게되고 처음으로.. 질문을 해봤다.. ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 사실 별거 아닌 질문이긴 했는데 다른 동기분께서 대답해주셨다.
 
Random.Next와 Random.Range의 차이
그렇게 어려운건 아니고 그냥 시스템에 내장되어 사용할 수 있는게 뭔지에 따라 다른 것 같았다.
내가 int로 반환하는 Range를 자주 사용하는데 이게 Next랑 진짜 똑같은 값을 내놓기때문에 무슨 차이지? 싶었다.
근데 사용할 수 있는 그게 나뉘는거였다니 이번에 알게되어서 좋다! 질문... 많이 해야징....
 
강의는 1주차 2주차를 둘다 들었는데 1주차 과제는 쉬워서 블로그에는 안올려도될 것 같고 2주차 부터는 도움이 될만한 글일 듯 하여 올린다.
 
그리고 또 팀장됨
아나 저번주에는 자진 팀장 했는데
이번에는 추하게 안한다고 빼다가 뽑기로 당첨됨;; 
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
그래서 우리는 모든것을 도박으로 정하는 팀으로 컨셉을 정했다....... 화이팅!!!!!!!

 

본론

[ 구구단 출력하기 ]

- 1부터 9까지의 숫자를 각각 1부터 9까지 곱한 결과를 출력하는 프로그램을 작성해보세요.

using System.Text;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            StringBuilder sb = new StringBuilder();

            for (int i = 1; i <= 9; i++)
            {
                for(int j = 1; j <= 9; j++)
                {
                    sb.AppendLine($"{i} x {j} = {i*j}");
                }
            }
            Console.Write( sb.ToString() );
        }
    }
}

[ 별 찍기 ]

  1. 오른쪽으로 기울어진 직각삼각형 출력하기:
    • 이 부분에서는 for 루프를 사용하여 오른쪽으로 기울어진 직각삼각형을 출력하는 프로그램을 작성해야 합니다. 삼각형의 높이는 5입니다.
  2. 역직각삼각형 출력하기:
    • 역직각삼각형을 출력하는 프로그램을 작성해야 합니다. 이 삼각형의 높이 역시 5입니다.
  3. 피라미드 출력하기:
    • 피라미드를 출력하는 프로그램을 작성해야 합니다. 이 피라미드의 높이는 5입니다.
using System.Text;

namespace ConsoleApp1
{
    internal class Program
    {
        // 별찍기
        static void Main(string[] args)
        {
            for (int i = 1; i <= 5; i++)
            {
                for(int j = 1; j <= i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }

            Console.WriteLine();

            for (int i = 5;i >= 1; i--)
            {
                for (int j = 1; j <= i; j++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }

            Console.WriteLine();

            for(int i = 1; i <= 5; i++)
            {
                for(int j = 1; j <= 5 - i; j++)
                {
                    Console.Write(" ");
                }
                for(int k = 1;k <= 2 * i - 1; k++)
                {
                    Console.Write("*");
                }
                Console.WriteLine();
            }
        }
    }
}

 
이미 풀었던 문제라 쉽게 풀었다.
 
> 내 블로그 링크: https://milkyquartz.tistory.com/35

 

[C#] 백준 2444번 별찍기 - 7 (다이아몬드 별찍기)

[ 문제 ] 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. [ 코드 ] using System; using System.Text; using static System.Console; namespace Baekjoon { internal class Program { static void Main() { int n = int.Parse(ReadLine()); Strin

milkyquartz.tistory.com


[ 최대값, 최소값 찾기 ]

- 사용자로부터 일련의 숫자를 입력받아, 그 중에서 최대값과 최소값을 찾는 프로그램을 작성해보세요.
1. 내 코드

using System;

namespace ConsoleApp1
{
    internal class Program
    {

        static void Main(string[] args)
        {
            int n = 5;
            int min = int.MaxValue;
            int max = int.MinValue;

            for (int i = 0; i < n; i++)
            {
                Console.Write("숫자를 입력하세요: ");
                int num = int.Parse(Console.ReadLine());

                if(num > max)
                {
                    max = num;
                }
                
                if(num < min)
                {
                    min = num;
                }
            }

            Console.Write($"최대값:{max}\n최소값:{min}");
        }
    }
}

 
2. 풀이 코드

using System;

class Program
{
    static void Main()
    {
        int[] numbers = new int[5]; // 5개의 정수를 저장할 배열 선언
        for(int i = 0; i < 5; i++)
        {
            Console.Write("숫자를 입력하세요: "); // 사용자에게 숫자 입력 요청
            numbers[i] = int.Parse(Console.ReadLine()); // 사용자가 입력한 값을 배열에 저장
        }

        int max = numbers[0]; // 최대값을 배열의 첫 번째 요소로 초기화
        int min = numbers[0]; // 최소값을 배열의 첫 번째 요소로 초기화

        for(int i = 1; i < 5; i++)
        {
            if(numbers[i] > max) // 현재 요소가 최대값보다 크다면
            {
                max = numbers[i]; // 현재 요소를 새로운 최대값으로 설정
            }
            if(numbers[i] < min) // 현재 요소가 최소값보다 작다면
            {
                min = numbers[i]; // 현재 요소를 새로운 최소값으로 설정
            }
        }

        Console.WriteLine("최대값: " + max); // 계산된 최대값 출력
        Console.WriteLine("최소값: " + min); // 계산된 최소값 출력
    }
}

 
배열에 담아서 최대값, 최소값을 구하셨는데 나는 그렇게 안했다. 근데 뭐 이건 어떻게든 풀 수 있는거라 그냥 다른 풀이일뿐이라고 생각한당.


[ 소수 판별하기 ]

- 사용자로부터 숫자를 입력받아 그 숫자가 소수인지 아닌지를 판별하는 프로그램을 작성해보세요.

using System.Text;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.Write("숫자를 입력하세요: "); // 사용자에게 숫자 입력 요청
            int num = int.Parse(Console.ReadLine()); // 사용자가 입력한 값을 정수로 변환하여 저장

            if (IsPrime(num)) // 입력 받은 숫자가 소수라면
            {
                Console.WriteLine(num + "은 소수입니다."); // 소수임을 출력
            }
            else // 소수가 아니라면
            {
                Console.WriteLine(num + "은 소수가 아닙니다."); // 소수가 아님을 출력
            }
        }

        private static bool IsPrime(int num)
        {
            if (num <= 1) return false;
            else if (num <= 3) return true;
            else if (num % 2 == 0 || num % 3 == 0) return false;

            for (int i = 5; i * i <= num; i += 6)
            {
                if (num % i == 0 || num % (i + 2) == 0) return false;
            }

            return true;
        }
    }
}

 
2. 풀이 코드

using System;

class Program
{
    // 주어진 숫자가 소수인지 판별하는 함수
    static bool IsPrime(int num)
    {
        if (num <= 1) // 1보다 작거나 같은 수는 소수가 아니다.
        {
            return false;
        }
        for (int i = 2; i * i <= num; i++) // 2부터 숫자의 제곱근까지만 확인한다.
        {
            if (num % i == 0) // 숫자가 i로 나누어 떨어진다면 소수가 아니다.
            {
                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 + "은 소수가 아닙니다."); // 소수가 아님을 출력
        }
    }
}

 
나도 처음에는 풀이 코드처럼 풀었는데 백준 알고리즘을 많이 풀면서 더 효율적인 소수 찾는 방법을 알게되었다.
굳굳 
 
 
저의 백준 풀이에 많이 있던 알고리즘 입니당! 헤헤 수월하네용 
> 내 블로그 링크: https://milkyquartz.tistory.com/161

 

[C#] 백준 17103번 골드바흐 파티션

[ 문제 ] 골드바흐의 추측: 2보다 큰 짝수는 두 소수의 합으로 나타낼 수 있다. 짝수 N을 두 소수의 합으로 나타내는 표현을 골드바흐 파티션이라고 한다. 짝수 N이 주어졌을 때, 골드바흐 파티션

milkyquartz.tistory.com


[ 숫자 맞추기 ]

컴퓨터는 1에서 100까지의 숫자를 임의로 선택하고, 사용자는 이 숫자를 맞추어야 합니다. 사용자가 입력한 숫자가 컴퓨터의 숫자보다 크면 "너무 큽니다!"라고 알려주고, 작으면 "너무 작습니다!"라고 알려줍니다. 사용자가 숫자를 맞추면 게임이 종료됩니다.

  • 랜덤 클래스
  • Random random = new Random(); int numberToGuess = random.Next(1, 101);
using System.Text;

namespace ConsoleApp1
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("숫자 맞추기 게임을 시작합니다. 1에서 100까지의 숫자 중 하나를 맞춰보세요.");
            Random random = new Random();
            int result = random.Next(1, 101);
            int count = 0;

            while (true)
            {
                Console.Write("숫자를 입력하세요: ");
                int num = int.Parse(Console.ReadLine());
                if (num == result) break;
                else if(num > result)
                {
                    Console.WriteLine("너무 큽니다!");
                    count++;
                }
                else
                {
                    Console.WriteLine("너무 작습니다!");
                    count++;
                }
            }

            Console.Write($"축하합니다! {count}번 만에 숫자를 맞추었습니다.");
        }
    }
}

 


[ 틱택토 (콘솔) ]

- 3빙고 게임 같은거

using System;

namespace ConsoleApp1
{
    internal class Program
    {
        public static char[,] board = {{'1', '2', '3'},{'4', '5', '6'},{'7', '8', '9'}};

        static void Main(string[] args)
        {
            Console.WriteLine("플레이어 1: X 와 플레이어 2: O");
            int index = 0;
            
            while (true)
            {
				// 여긴 답지보고 수정했습니다.. 헤헤 선까지 쳐야하는거 몰랐네용
                //for (int i = 0; i < 3; i++)
                //{
                //    for(int j = 0; j < 3; j++)
                //    {
                //        Console.Write(board[i, j] + " ");
                //    }
                //    Console.WriteLine();
                //} 

                Console.WriteLine("     |     |     ");
                Console.WriteLine("  {0}  |  {1}  |  {2}  ", board[0,0], board[0,1], board[0,2]);
                Console.WriteLine("_____|_____|_____");
                Console.WriteLine("     |     |     ");
                Console.WriteLine("  {0}  |  {1}  |  {2}  ", board[1,0], board[1,1], board[1,2]);
                Console.WriteLine("_____|_____|_____");
                Console.WriteLine("     |     |     ");
                Console.WriteLine("  {0}  |  {1}  |  {2}  ", board[2,0], board[2,1], board[2,2]);
                Console.WriteLine("     |     |     ");

                if (index % 2 == 0)
                {
                    Console.WriteLine("플레이어 1의 차례");
                    int n1 = int.Parse(Console.ReadLine());

                    CheckMarker(n1, 'X'); // 숫자를 X로 바꿔주는 함수
                    if (CheckResult('X')) // 빙고되는지 확인하는 함수
                    {
                        Console.WriteLine("플레이어 1 승리");
                        break;
                    }

                }
                else
                {
                    Console.WriteLine("플레이어 2의 차례");
                    int n2 = int.Parse(Console.ReadLine());

                    CheckMarker(n2, 'O'); 
                    if (CheckResult('O'))
                    {
                        Console.WriteLine("플레이어 2 승리");
                        break;
                    }
                }

                if(index == 8)
                {
                    Console.WriteLine("무승부");
                    break;
                }

                index++;
            }


        }

        private static bool CheckResult(char marker)
        {
            for (int i = 0; i < 3; i++)
            {
                if (board[i, 0] == marker && board[i, 1] == marker && board[i, 2] == marker)
                {
                    return true;
                }
                if (board[0, i] == marker && board[1, i] == marker && board[2, i] == marker)
                {
                    return true;
                }
            }

            if ((board[0,0] == marker && board[1, 1] == marker && board[2, 2] == marker))
            {
                return true;
            }
            else if ((board[0, 2] == marker && board[1, 1] == marker && board[2, 0] == marker))
            {
                return true;
            }
            return false;
        }

        private static void CheckMarker(int n, char marker)
        {
            for (int i = 0; i < 3; i++)
            {
                for(int j = 0; j < 3; j++)
                {
                    if (board[i,j] == n.ToString()[0])
                    {
                        board[i,j] = marker;
                        return;
                    }
                }
            }
        }
    }
}

 
2. 풀이 코드

namespace _2_6
{
    internal class Program
    {
        static char[] arr = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
        static int player = 1;
        static int choice;
        static int flag = 0;

        static void Main(string[] args)
        {
            do
            {
                Console.Clear();
                Console.WriteLine("플레이어 1: X 와 플레이어 2: O");
                Console.WriteLine("\n");

                if (player % 2 == 0)
                {
                    Console.WriteLine("플레이어 2의 차례");
                }
                else
                {
                    Console.WriteLine("플레이어 1의 차례");
                }

                Console.WriteLine("\n");
                Board();

                string line = Console.ReadLine();
                bool res = int.TryParse(line, out choice);

                if(res == true)
                {
                    if (arr[choice] != 'X' && arr[choice] != 'O')
                    {
                        if(player % 2 == 0)
                        {
                            arr[choice] = 'O';
                        }
                        else
                        {
                            arr[choice] = 'X';
                        }

                        player++;
                    }
                    else
                    {
                        Console.WriteLine("죄송합니다. {0} 행은 이미 {1}로 표시되어 있습니다.", choice, arr[choice]);
                        Console.ReadLine();
                    }
                }
                else
                {
                    Console.WriteLine("숫자를 입려해주세요.");
                }

                flag = CheckWin();
            }
            while (flag != -1 && flag != 1);

            if(flag == 1)
            {
                Console.WriteLine("플레이어 {0}이(가) 이겼습니다.", (player % 2) + 1);
            }
            else
            {
                Console.WriteLine("무승부");
            }

            Console.ReadLine();
        }

        static void Board()
        {
            Console.WriteLine("     |     |     ");
            Console.WriteLine("  {0}  |  {1}  |  {2}  ", arr[1], arr[2], arr[3]);
            Console.WriteLine("_____|_____|_____");
            Console.WriteLine("     |     |     ");
            Console.WriteLine("  {0}  |  {1}  |  {2}  ", arr[4], arr[5], arr[6]);
            Console.WriteLine("_____|_____|_____");
            Console.WriteLine("     |     |     ");
            Console.WriteLine("  {0}  |  {1}  |  {2}  ", arr[7], arr[8], arr[9]);
            Console.WriteLine("     |     |     ");
        }

        static int CheckWin()
        {
            // 가로 승리 조건
            if (arr[1] == arr[2] && arr[2] == arr[3])
            {
                return 1;
            }
            else if (arr[4] == arr[5] && arr[5] == arr[6])
            {
                return 1;
            }
            else if (arr[7] == arr[8] && arr[8] == arr[9])
            {
                return 1;
            }

            // 세로 승리 조건
            else if (arr[1] == arr[4] && arr[4] == arr[7])
            {
                return 1;
            }
            else if (arr[2] == arr[5] && arr[5] == arr[8])
            {
                return 1;
            }
            else if (arr[3] == arr[6] && arr[6] == arr[9])
            {
                return 1;
            }

            // 대각선 승리조건
            else if (arr[1] == arr[5] && arr[5] == arr[9])
            {
                return 1;
            }
            else if (arr[3] == arr[5] && arr[5] == arr[7])
            {
                return 1;
            }
            
            // 무승부
            else if (arr[1] != '1' && arr[2] != '2' && arr[3] != '3' && arr[4] != '4' && arr[5] != '5' && arr[6] != '6' &&
                arr[7] != '7' && arr[8] != '8' && arr[9] != '9')
            {
                return -1;
            }
            else { return 0; }
            
        }
    }
}

 
나는 2차원 배열로 했고 풀이 코드는 1차원 배열로 했다. 개인 취향


 

오늘의 회고

 
튜터님들이 분명 자책하지 말라했는데..
왜이렇게 세상에는 부지런하고 똑똑이들이 많은거야..

나는 게으르고 안똑똑이인데...
 
개인 프로젝트를 벌써 시작한 사람들이 많다니..
난 아직 강의도 다 안들었는데..!!!!
오늘안에 3주차 강의 과제까지 마무리하고 자야겠다 오늘의 TIL 끝~
사실 어려워서 자려고ㅜ접었읍니다..
내가 알게된 것도 공유하는 착한 사람.. 이 되고싶은데 오지라퍼 될까봐 소심하게 올리게된다.
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ ㅜㅜㅜㅜ  

반응형
저작자표시 비영리 변경금지 (새창열림)

'Record > TIL' 카테고리의 다른 글

[Unity] 추상클래스  (2) 2024.04.24
[Unity] 추상클래스와 파일 세분화 중요성  (2) 2024.04.23
[Unity] 첫 프로젝트 끝 싱숭생숭 (+KPT회고)  (2) 2024.04.19
[Unity] 난 감자 돌맹이 방구 코딱지  (4) 2024.04.18
[Unity] 술 한잔 마셨습니다..  (2) 2024.04.17
  1. [ 구구단 출력하기 ]
  2. [ 별 찍기 ]
  3. [ 최대값, 최소값 찾기 ]
  4. [ 소수 판별하기 ]
  5. [ 숫자 맞추기 ]
  6. [ 틱택토 (콘솔) ]
'Record/TIL' 카테고리의 다른 글
  • [Unity] 추상클래스
  • [Unity] 추상클래스와 파일 세분화 중요성
  • [Unity] 첫 프로젝트 끝 싱숭생숭 (+KPT회고)
  • [Unity] 난 감자 돌맹이 방구 코딱지
석영
석영
관심 분야는 AR, VR, 게임이고 유니티 공부 중 입니다. (정보처리기사,컴퓨터그래픽스운용기능사 취득)
반응형
석영
유석영의 개발공부
석영
전체
오늘
어제
  • 분류 전체보기
    • Unity
      • Project
      • Tip
      • Assets
    • Record
      • TIL
      • Game
    • Language
      • C#
      • Node.js
      • HTML, JS
    • Study
      • Linear Algebra

인기 글

최근 글

hELLO· Designed By정상우.v4.5.2
석영
[Unity] 코딩 문제로 오니 숨이 트인다!!

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.