코딩 공부/C#-코딩테스트

(백준/C#) 1차원 배열

공부를 함 2024. 8. 19. 10:30

//10807

using System;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            int num = int.Parse(Console.ReadLine());
            string[] v = Console.ReadLine().Split();
            int key = int.Parse(Console.ReadLine());
            int answer = 0;

            for (int i = 0; i < num; i++)
            {
                if (int.Parse(v[i]) == key)
                    answer++;
            }
            Console.WriteLine(answer);
        }
    }
}

 

 

//10871

using System;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            string[] v = Console.ReadLine().Split();
            string[] v2 = Console.ReadLine().Split();

            for (int i = 0; i < int.Parse(v[0]); i++)
            {
                if (int.Parse(v2[i]) < int.Parse(v[1]))
                    Console.Write(v2[i] + " ");
            }
           
        }
    }
}

 

 

//10818

Array.Sort()

정렬 메소드를 사용할 수 있는지가 관건이다.

using System;
using static System.Console;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            int num = int.Parse(ReadLine());
            string[] v = ReadLine().Split();
            int[] arr = new int[num];

            for(int i = 0; i < num; i++)
            {
                arr[i] = int.Parse(v[i]);
            }
            Array.Sort(arr);
            WriteLine($"{arr[0]} {arr[num-1]}");
            
        }
    }
}

 

 

//2562

using System;
using static System.Console;
using System.Text;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            int[] arr = new int[9];
            int num = 0;
            int max = arr[0];

            for(int i = 0; i < arr.Length; i++)
            {
                arr[i] = int.Parse(ReadLine());
            }

            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > max)
                {
                    max= arr[i];
                    num = i;
                }
            }
            Console.WriteLine(max);
            Console.WriteLine(num+1);

        }
    }
}

 

 

//10810

using System;
using static System.Console;
using System.Text;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            string[] v = ReadLine().Split();
            int[] basket = new int[int.Parse(v[0])];

            for(int i = 0; i < int.Parse(v[1]); i++)
            {
                string[] inputArr = ReadLine().Split();
                for (int basketNum = int.Parse(inputArr[0]) - 1; basketNum < int.Parse(inputArr[1]); basketNum++)
                {
                    basket[basketNum] = int.Parse(inputArr[2]);
                }
            }
            Console.WriteLine(String.Join(" ", basket));
        }
    }
}

 

 

//10813

using System;
using static System.Console;
using System.Text;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            string[] v = ReadLine().Split();
            int[] basket = new int[int.Parse(v[0])];
            int temp = 0;

            for(int i = 0; i < basket.Length; i++)
            {
                basket[i] = i + 1;
            }

            for (int i = 0; i < int.Parse(v[1]); i++)
            {
                string[] inputArr = ReadLine().Split();

                temp = basket[int.Parse(inputArr[0]) - 1];
                basket[int.Parse(inputArr[0]) - 1] = basket[int.Parse(inputArr[1]) - 1];
                basket[int.Parse(inputArr[1]) - 1] = temp;
            }
            Console.WriteLine(String.Join(" ", basket));
        }
    }
}

 

 

//5597

using System;
using static System.Console;

namespace TEST
{
    class Test
    {
        static void Main(string[] args)
        {
            int[] arr = new int[30];
            for(int i = 0; i < arr.Length; i++)
            {
                arr[i] = i+1;
            }
            for (int i = 0; i < 28; i++)
            {
                int num = int.Parse(ReadLine());
                if (Array.IndexOf(arr, num) > -1)
                    arr[Array.IndexOf(arr, num)] = -1;
            }
            Array.Sort(arr);
            for(int i = 0; i < arr.Length; i++)
            {
                if (arr[i] > -1)
                {
                    WriteLine(arr[i]);
                }
            }
        }
    }
}

 

int[] arr = new int[31];
for (int i = 0; i < 28; i++)
{
    arr[int.Parse(Console.ReadLine())] = 1;
}
for (int i = 1; i < 31; i++)
    if (arr[i] != 1)
        Console.WriteLine(i);

 

 

//3052

using System;
using static System.Console;

namespace BaekJoon
{
    class BaekJoon
    {
        static void Main(string[] args)
        {
            int[] arr = new int[10];
            int count = 1;
            for (int i = 0; i < 10; i++) 
            {
                arr[i] = int.Parse(ReadLine());
                arr[i] %= 42;
            }
            Array.Sort(arr);
            for (int i = 0; i < 10; i++)
            {
                if(i != 0)
                {
                    if (arr[i] != arr[i - 1])
                        count++;
                }
            }
            WriteLine(count);
        }
    }
}

 

HashSet<int> arr = new HashSet<int>();
for (int i = 0; i < 10; ++i)
{
    arr.Add(int.Parse(Console.ReadLine()) % 42);
}
Console.Write(arr.Count);

 

 

일단 HashSet<T>는 중복된 값을 허용하지 않는 집합 자료구조다. 즉, 각 요소는 고유해야 한다.

따라서 콘솔 입력 받은 값%42을 Add() 했을 때 arr에 이미 동일한 값이 존재한다면 아예 추가 되지 않는 것이다..

 

 

//10811

using System;
using static System.Console;

namespace BaekJoon
{
    class BaekJoon
    {
        static void Main(string[] args)
        {
            int[] nm = Array.ConvertAll(ReadLine().Split(), int.Parse);
            int[] basket = new int[nm[0]];

            for (int i = 0; i < basket.Length; i++)
                basket[i] = i + 1;

            for (int m = 0; m < nm[1]; m++)
            {
                int[] ij = Array.ConvertAll(ReadLine().Split(' '), int.Parse);
                Array.Reverse(basket, ij[0] -1, ij[1] - ij[0] +1);
            }
            WriteLine(string.Join(" ", basket));
        }
    }
}

 

Split() 메소드에 구분자를 명시적으로 지정하는 게 좋을까 싶었는데, 아무래도 가독성과 명확성 높이는 데에는 좋은 듯 하다.

 

//1546

using static System.Console;

int subject = int.Parse(ReadLine());
float[] score = Array.ConvertAll(ReadLine().Split(), float.Parse);
float maxScore = score.Max();
float sum = 0;

for (int i = 0; i < subject; i++)
{
    sum += (score[i] / maxScore) * 100;
}
WriteLine(sum / subject);

 

'코딩 공부 > C#-코딩테스트' 카테고리의 다른 글

(백준/C#) 심화 1  (0) 2024.09.23
(백준/C#) 문자열  (0) 2024.09.09
(백준/C#) 반복문  (0) 2024.08.19
(백준/C#) 조건문  (0) 2024.08.19
(백준/C#) 입출력과 사칙연산  (0) 2024.08.19