Coding Test/Programmers

[Lv.2] 최댓값과 최솟값 [프로그래머스_코딩테스트] [문자열, 수학] [25분]

whawoo 2025. 6. 18. 13:52
반응형

🔍 문제 요약

https://school.programmers.co.kr/learn/courses/30/lessons/12939

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

공백으로 구분된 숫자들이 들어있는 문자열 s가 주어졌을때 해당 문자열에 있는 숫자들의 최소값과 최대값을 출력하는 문제

🧠 나의 접근 방식과 시행착오

약 10분 정도 걸렸나 안걸렸나 싶은 문제. 그냥 s를 공백을 기준으로 Split 시키고 간단하게 min, max 숫자와 비교하면서 최소, 최대를 구해서 출력했다

using System;
using System.Collections.Generic;

public class Solution
{
    /// <summary>
    /// 최댓값과 최솟값
    /// https://school.programmers.co.kr/learn/courses/30/lessons/12939
    /// </summary>
    public string solution(string s)
    {
        var split = s.Split(' ');
        int min = int.MaxValue;
        int max = int.MinValue;

        foreach (var item in split)
        {
            var i = int.Parse(item);

            if (i < min)
            {
                min = i;
            }

            if (i > max)
            {
                max = i;
            }
        }
        
        return $"{min} {max}";
    }
}

/// <summary>
/// C# 7.3
/// </summary>
internal class Program
{
    public static void Main(string[] args)
    {
        var sl = new Solution();
        var sArr = new[] { "1 2 3 4", "-1 -2 -3 -4", "-1 -1" };

        foreach (var item in sArr)
        {
            Console.WriteLine(sl.solution(item));
        }
    }
}

✅ 풀이 코드

피드백이랄 건 없지만 더 간결하게 Linq를 사용한 방법도 있어서 참고를 하기 위해 알려주었다. Select야 그렇다 치는데 Min, Max는 두 번을 따로 구해야 하는 거라 지금 것보다 효율은 좋지 못하다 한다.

using System.Linq;

public string solution(string s)
{
    var nums = s.Split(' ').Select(int.Parse);
    return $"{nums.Min()} {nums.Max()}";
}

🔄 정리

쉬운 문제에 속한다고 생각되어 그렇게 생각할 요소는 없는 듯 하다. 지금 보니 레벨 2로 되어 있는데 왜 레벨 2인건진 모르겠네..

반응형