코딩테스트 (C#)

백준 10818 : 최소, 최대 - C# 풀이

UniCoti-sub 2024. 9. 7.
반응형

문제 사진

이번 문제도 간단하다.

첫 줄에는 수의 개수가 주어지고, 두번째 줄에는 띄어쓰기로 구분된

몇가지의 수가 나열되어 나온다.

 

우리는 그 중에서 최소와 최대를 찾으면 되는 문제이다.

string 배열을 int 배열로 변환하는 과정은 동일할 것 같고, (아니면 요소를 파싱하던가)

이후 미리 최소, 최대 변수를 만들어 놓고 저장된 값 보다 작거나 클 경우

변수를 그 요소로 업데이트 하는 식의 for문으로 알고리즘을 만들 수 있을 것 같다.

 

아니면 나처럼 연습보다는 실무적인 것을 더욱 우선시 하는 사람이거나

멋있어보이고 싶다면 Linq를 써보는 것도 좋다.

Linq는 특히 배열이나 리스트에서 항상 직접 만들어야해서 불편했던

여러가지 기능들을 제공하는데, 이런 경우에 응용하면 매우 편하다.

 

using System;
using System.Linq;

namespace unicoti {
    class Program {
        static void Main(string[] args) {
            Console.ReadLine();
            string[] arr = (Console.ReadLine()??"").Split(' ');
            int[] intArr = arr.Select(int.Parse).ToArray();
            
            int max = intArr.Max();
            int min = intArr.Min();
            
            Console.WriteLine($"{min} {max}");
        }
    }
}

 

나는 Linq를 사용했다.

정수형으로 바꾸는 과정은 Select 함수를 사용한 다음 ToArray를 썼고,

최소와 최대는 Max(), Min()으로 쉽게 찾을 수 있었다.


오늘의 느낀점)

알고리즘을 연습하는 것도 중요하지만 이미 만들어진 걸 쓰는 것도 중요하다.

만약에 모든걸 처음부터 만드려고 한다면 어셈블리어를 넘어서 0과 1으로 문법 체계부터

만들어야 한다고 생각한다. 알고리즘의 연습 용도라면 for문을 사용해보는 게 좋겠지만

자신의 목적에 따라서 바뀔줄도 알아야 하는 것 같다.

 

개인적으로는 int형으로 바꾸는 과정에서 사용된

Select함수에 대해서 좀 더 자세히 알아봐야 겠다고 느꼈다.


이상으로 도움이 되었길 바라며,

 

끝.

 

 

 

 

반응형

댓글