Home PS) 최댓값 최솟값
Post
Cancel

PS) 최댓값 최솟값

출처
: Programmers

문제

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 “(최소값) (최대값)”형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 “1 2 3 4”라면 “1 4”를 리턴하고, “-1 -2 -3 -4”라면 “-4 -1”을 리턴하면 됩니다.

제한 조건

  • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

제한사항

  • 1 ≤ n ≤ $10^7$
  • 0 ≤ leftright < $n^2$
  • right - left < $10^5$
(생략)

나의 풀이

1
2
3
4
5
6
def solution(s):
    parsed = s.split(' ')
    int_converted = [int(parsed[i]) for i in range(len(parsed))]
    be_sorted = sorted(int_converted)
    answer = str(f"{be_sorted[0]} {be_sorted[-1]}")
    return answer

문제의 입출력이 사람 낚기 딱 좋게 되어있다…
제시된 케이스는 정렬되어 있지만
제한 조건에 따르면 입력값은 어떤 식이든 상관없고,
그저 숫자값들이 공백으로 구분되어 있으면 되는 것이다.

split()으로 ' ' 기준으로 나눈 뒤에
그 값들을 int값으로 바꿔주면서 리스트화 한다.
그 뒤에 sorted()로 정렬한다.



다른 사람들의 풀이

1
2
3
def solution(s):
    s = list(map(int,s.split()))
    return str(min(s)) + " " + str(max(s))

(출처: [프로그래머스] n^2 배열 자르기 - LEVEL2)

그냥 min, max 쓰면 되는 것이었다…
그리고 이제 좀 map()을 활용하도록 해야겠다.
이참에 map에 대한 공식문서를 살펴보자.



map() 함수

1
map(function, iterable, *iterables)
Return an iterator that applies function to every item of iterable, yielding the results. If additional iterables arguments are passed, function must take that many arguments and is applied to the items from all iterables in parallel. With multiple iterables, the iterator stops when the shortest iterable is exhausted. For cases where the function inputs are already arranged into argument tuples, see itertools.starmap().

첫 번째 인자는 함수,
두 번째는 iterable 객체이다.
그리고 이 함수는 반환값으로
iterator를 반환한다.
즉, list()로 묶기 딱 좋은 것이다.

Contents