24.10.01 Day55

최지원·2024년 10월 1일

연습문제

Random함수

using System;
using System.Collections;
using System.ComponentModel;

namespace ex_1001 {
    internal class ex05 {
        static void Main() {

            // 랜덤한 정수 생성하기
            // Random 클래스 : 랜덤한 수를 생성해주는 클래스
            // rand : 클래스로부터 생성된 객체
            // new : 객체를 생성하는 예약어
            // Random() : 클래스이름과 동일한 생성자함수
            //Random rand = new Random();
            //int randNum = rand.Next(1, 100); //1부터 100사이의 랜덤한 정수 발생
            //Console.WriteLine(randNum);

            // 연습문제4
            // 1. 철수와 영희가 각각 주사위를 2번씩 던져서,
            // 주사위의 수의 합이 더 큰 사람이 승리하게 된다.
            // 누가 승리하는지 출력하시오.
            // 입력예) 주사위값 4개
            // 출력예) 영희 승! or 철수 승!
            Random rand_num = new Random();
            int randNum1 = rand_num.Next(1, 6);
            int randNum2 = rand_num.Next(1, 6); //1부터 100사이의 랜덤한 정수 발생
            int sum = randNum2 + randNum1;
            Console.WriteLine("<문제1>\n철수의 주사위 : " + randNum1 + " + " + randNum2 + " = " + sum);

            int randNum3 = rand_num.Next(1, 6);
            int randNum4 = rand_num.Next(1, 6); //1부터 100사이의 랜덤한 정수 발생
            int sum2 = randNum3 + randNum4;
            Console.WriteLine("영희의 주사위 : " + randNum3 + " + " + randNum4 + " = " + sum2);


            // 2. 랜덤한 정수 (0부터9사이)를 2개 뽑아서
            // 첫번째 정수는 십의 자리로, 두번째 정수는 일의 자리로 생성하여
            // 출력하시오
            // 입력예) 랜덤한 정수 2개 1과 3
            // 출력예) 13
            Random rand_a = new Random();
            Random rand_b = new Random();
            int randNum_a = rand_a.Next(0, 9);
            int randNum_b = rand_b.Next(0, 9);
            Console.WriteLine("\n<문제2>\n랜덤 정수 십의자리 : " + randNum_a + " / 랜덤 정수 일의자리 : " + randNum_b);
            Console.WriteLine("출력 : " + randNum_a + randNum_b);


            //3. 1부터 100사이의 랜덤한 정수를 하나 발생시키고
            // 90점이상이면 "A"
            // 80점이상이면 "B"
            // 70점이상이면 "C"
            // 60점이상이면 "D"
            // 그외의 수이면 "E" 라고 출력하시오.
            // 입력예) 88
            // 출력예) B
            Random rand = new Random();
            int score = rand.Next(1, 100);
            Console.WriteLine("\n<문제3>");
            if (score > 90) {
                Console.WriteLine("점수 : " + score + " / 성적 : A");
            } else if (score > 80) {
                Console.WriteLine("점수 : " + score + " / 성적 : B");
            } else if (score > 70) {
                Console.WriteLine("점수 : " + score + " / 성적 : C");
            } else if (score > 60) {
                Console.WriteLine("점수 : " + score + " / 성적 : D");
            } else {
                Console.WriteLine("점수 : " + score + " / 성적 : E");
            }

            //4. 철수와 영희가 교대로 주사위를 계속 던져(무한 루프)
            // 같은 주사위의 값이 먼저 나온 사람이 승리하게 된다.
            // 누가 먼저 승리하는지 출력하시오.
            // 출력예) 철수 4
            //         영희 5
            //         철수 4
            //         철수 승
            //         !
            Console.WriteLine("\n<문제4>");
            Random random = new Random();

            int before_chulsoo = 0;
            int before_younghee = 0;

            while (true) {
                int chulsoo = random.Next(1, 7);
                int younghee = random.Next(1, 7);

                Console.WriteLine("철수 : " + chulsoo);
                Console.WriteLine("영희 : " + younghee);

                if (chulsoo == before_chulsoo) {
                    Console.WriteLine("철수 승!");
                    break;
                }

                else if (younghee == before_younghee) {
                    Console.WriteLine("영희 승!");
                    break;
                }

                // 이전 값 업데이트
                before_chulsoo = chulsoo;
                before_younghee = younghee;
            }

            //5. 100제 - 34번
            // 0부터 9사이의 정수값을 차례로 3개 발생시키고
            // 그 값을 반대로 출력하시오.(ArrayList나 배열 사용)
            // 배열: int[] student = new int[6];
            // 리스트: ArrayList<int> list = new ArrayList(); list.add(3);
            // 입력예) 3 6 8
            // 출력예) 8 6 3

            Console.WriteLine("\n<문제5>");
            ArrayList list = new ArrayList();

            Random random_num = new Random();

            Console.Write("출력 : ");
            for (int i = 0; i < 3; i++) {
                int array_num = random_num.Next(0, 9);
                list.Add(array_num);
                Console.Write(list[i]);
            }
            Console.Write("\n역순 : ");
            for (int i = 2; i >= 0; i--) {
                Console.Write(list[i]);
            }
        }
    }
}

for문

using System;

namespace ex1001 {
    internal class ec06 {
        static void Main() {
            //반복문 for문 while문
            //패턴
            //for( 초기화; 조건식; 증감문 ){
            //   수행문;
            //}
            //for (int i = 0; i < 5; i++) {
            //    Console.WriteLine(i);
            //}

            //연습문제 5
            //1. 반복변수 i를 1부터 100까지 출력하시오.
            Console.WriteLine("<문제1>");
            for(int i = 1; i <= 100; i++) {
                Console.Write(i + " ");
            }

            //2. 반복변수 i를 1부터 100사이의 짝수만 출력하시오.
            Console.WriteLine("\n\n<문제2>");
            for (int i = 1; i <= 100; i++) {
                if(i % 2 == 0) {
                    Console.Write(i + " ");
                }
            }
            //3. 10부터 -10까지 출력하시오.
            Console.WriteLine("\n\n<문제3>");
            for(int i = 10; i >= -10; i--) {
                Console.Write(i + " ");
            }

            //4. 1부터 100사이의 수 중에서 3이나 6이나 9가 포함된 수만 출력하시오.
            // 출력예) 3, 6, 9, ... 3, 33 ... 99
            Console.WriteLine("\n\n<문제4>");
            for (int i = 1; i <= 100; i++) {
                string num_str = i.ToString();
                if (num_str.Contains("3") || num_str.Contains("6") || num_str.Contains("9")) {
                    Console.Write(i + " ");
                }
            }

            //5. 1부터 100사이의 2의 배수이거나 3의 배수인 수의 갯수를 출력하시오.
            Console.WriteLine("\n\n<문제5>");
            for (int i = 1; i <= 100; i++) {
                if (i % 2 == 0 || i % 3 == 0) {
                    Console.Write(i + " ");
                }
            }

            //6. 10의 약수의 갯수와 그 약수를 출력하시오.
            // 약수란 나누어 떨어지는 수
            // 출력예) 10의 약수는 1 2 5 10
            Console.WriteLine("\n\n<문제6>");

            int num = 10;
            Console.Write(num + "의 약수는 ");
            for (int i = 1; i <= num; i++) {
                if(num % i == 0) {
                    Console.Write(i + " ");
                }
            }
            Console.WriteLine("");

            //7. 2부터 100사이의 랜덤한 정수를 발생시키고,
            // 그 수가 소수인지 아닌지 판별하시오.
            // 소수는 약수의 갯수가 2개인 정수이다.
            // 출력예) 7은 소수입니다.
            //        10은 소수가 아닙니다.

            Console.WriteLine("\n\n<문제7>");

            Random rand_num = new Random();
            int randNum = rand_num.Next(2, 100);
            int count = 0;

            for (int i = 1; i <= randNum; i++) {
                if (randNum % i == 0) {
                    count++;
                }
            }
            if (count == 2) {
                Console.WriteLine(randNum + "은 소수입니다.");
            } else {
                Console.WriteLine(randNum + "은 소수가 아닙니다.");
            }



            //중괄호 생략하는 경우 - 수행문이 한줄일때만
            //for (int i = 0; i < 5; i++)
            //    Console.WriteLine(i);

            //if (10 < 20)
            //    Console.WriteLine("10<20");
        }
    }
}

0개의 댓글