C#/C# (백준)

[C#] 백준 알고리즘 3052번, 나머지

서니션 2022. 8. 11. 18:28
728x90
반응형

 

내가 처음에 작성 한 것..

출력 값은 맞아서 오 맞나? 했더니 전혀 아니였음 -.- ;;

using System;

namespace 백준3052번
{
    class Program
    {
        static void Main(string[] args)
        {
            // 10개의 수 입력
            int[] arr = new int[10];
            // 서로 다른 값을 넣어 줄 변수
            int num = 0;

            // arr에 수 넣어주기
            for (int i=0; i<10; i++)
            {
                arr[i] = int.Parse(Console.ReadLine());
            }

            for (int i=0; i<10; i++)
                if (arr[i] % 42 != 0)
                {
                    num += 1;
                }
            Console.WriteLine(num);
        }
    }
}

 

오늘코딩님의 코드 

분명 Contains는 알았는데 사용할 생각을 하나도 못했다 ㅡ.- 바보..

using System;

namespace 백준3052번_나머지
{
    class Program
    {
        static void Main(string[] args)
        {
            // 입력받을 숫자를 담기 위한 리스트 numbers 선언
            List<int> numbers = new List<int>();

            // 정답을 저장할 리스트 answer 선언
            List<int> answer = new List<int>();

            // 한줄에 숫자 하나씩 10번 입력되므로 for으로 입력받는다
            for(int i=0; i<10; i++)
            {
                // 숫자 입력받아서 곧장 42로 나눈 나머지를 numbers에 넣기
                numbers.Add(int.Parse(ReadLine()) % 42);
            }

            // numbers에 저장된 나머지 중에서 같은 숫자가 몇 개인지 세기
            // 첫번째 for문은 0부터 전체길이 -1만큼, 두번째 for문은 1부터 끝까지 돌려서 엇갈리게 만든다.
            for (int i=0; i < numbers.Count-1; i++)
            {
                for (int j=i+1; j<numbers.Count; j++)
                {
                    // 두개를 비교했는데 동일한 값이라면 다음 루프로 넘어감
                    if (numbers[i] == numbers[j])
                    {
                        continue;
                    }
                    else // 동일한 값이 아니라면
                    {
                        // answer 리스트에 해당 값이 포함되어있는지 검사함
                        if (!answer.Contains(numbers[i]))
                        {
                            answer.Add(numbers[i]);
                        }
                    }
                }
            }
            // 위 과정이 끝나면 중복되지 않는 나머지들만 answer에 저장됨
            // 그러나 마지막 숫자는 검사에 빠져있으므로 마지막 숫자만 따로 검사함
            if (!answer.Contains(numbers[^1]))
            {
                answer.Add(numbers[^1]);
            }

            // answer 리스트의 총 개수를 출력하면 끝
            Console.WriteLine(answer.Count);
        }
    }
}

 

728x90
반응형