[프로그래머스] 최댓값과 최솟값

kiki·2023년 12월 24일
0

프로그래머스

목록 보기
13/79

문제 링크

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

문제 설명

숫자로 이루어진 str에서 최솟값과 최댓값을 찾아 반환

1차 시도 - 불통

def solution(s):
    tmp = s.split(" ")
    return str(min(tmp))+" "+str(max(tmp))

split된 게 int가 아니라 str이라 min(['-1,'-4'])하면 -1 나옴. 왜냐면 str을 비교할 때는 음수가 고려되지 않기 때문에?
근데 왜 리턴은 충실하게 str 변환해줬냐

2차 시도 - 통과

def solution(s):
    tmp = s.split(" ")
    tmp = [int(i) for i in tmp]
    return str(min(tmp))+" "+str(max(tmp))

그래서 split 후 모든 요소를 int 형으로 변환해주는 코드 추가
통과!

3차 시도 - map 사용

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

map을 모르는 건 아니었으나 어케 사용하는지 까먹었었음
map을 사용하면 for문 돌지 않고 각 요소를 int type으로 변환
map은 C로 구현되어있어 더 효율적이라고 한다.

정리

  • str에 min, max를 적용할 경우 음수는 고려되지 않는다.
  • map(func, iterable)와 같이 map 사용해 각 요소에 함수를 적용할 수 있음
  • 여기서 map은 map 객체를 반환하므로 내가 원하는 타입으로 입혀줘야함 -> list(map(int, tmp))

0개의 댓글