문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
처음 시도:
def solution(s):
# 문자열 -> 리스트 => split을 사용해서
#Split - 문자열을 구분자를 기준으로 나누어 리스트로 반환
num_list = list(map(int, s.split()))
min_num = min(num_list)
max_num = max(num_list)
answer = f'{min_num} {max_num}'
return answer
i) 처음 생각한 것은 당연 min, max 함수와 어떻게 공백기준으로 나눌 것인지였다
ii) s.split()으로 나누고 min, max를 넣었는데 양수는 통과했는데 음수부분이 처리가 안되어서 원인이 뭔가 생각했다 => split함수를 사용한 리스트의 각 요소는 "int" 가 아닌 "str"이기에!
iii) list안에 있는 요소들을 int로 바꿔주는 역할을 하는 map함수를 넣었더니 통과함
string.split(sep, maxsplit): 문자열을 separator 기준으로 잘라 리스트로 변환하는 함수
ex)
s = "This is me Thank you"
result = s.split(" " ,1)
# result = ['This', 'is me Thank you']
list(map(function, iterable)): iterable 객체의 각 요소에 function을 적용함(map()만 사용시 map으로 반환되기에 iterable이 list였다면 list(map())으로 해줘야 함)
ex1) 리스트의 모든 요소를 정수로 변환하고 싶을 때: list(map(int, list_name))
ex2)
def multiply(a,b):
return a * b
list_a = [3,6,1,8,19]
list_b = [57,7,9,10]
result = list(map(multiply, list_a, list_b))
알고있는 개념들이 문제로 적용할때는 기억이 안난다 ㅋㅋ...
연습하면서 나온 개념들만이라도 확실히 익히면 점점 나아지겠지란 생각으로 계속 풀어나가야겠다
문제 통과하고 다른 사람들 풀이를 꼭 보는데 풀이가 내 것보다 훨씬 짧아 매번 당황스럽지만 언젠간 나도 저렇게 하는 날이 올거라 믿는다.
파이팅