문제 설명

문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요.

 

예를들어 s가 1 2 3 4라면 1 4를 리턴하고, -1 -2 -3 -4라면 -4 -1을 리턴하면 됩니다.


제한 조건

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


입출력 예


나의 코드

def solution(s):
    s_ = list(map(int, s.split()))
    s1 = min(s_)
    s2 = max(s_)

    s = s1, s2
    answer = " ".join(map(str, s))
    return answer

풀이 과정

  1. s를 공백으로 자르고 int형으로 변환한다.
  2. 최대, 최소 찾는다.
  3. 다시 공백으로 구분해준다.

오답 코드

def solution(s):
    s_ = map(int, s.split())
    s1 = min(s_)
    s_ = map(int, s.split())
    s2 = max(s_)

    s = s1 + s2
    answer = " ".join(list(s))
    return answer

 

s1 + s2 으로 하면 s = 5가 되고 리스트를 합친 것이 아니라 더한 것이 된다.

s1 ,s1 로 해주어야 한다.

 

또한 s=5 로 리스트가 아니기 때문에 int형으로 나와서

위의 코드로 제출하면

TypeError: 'int' object is not iterable

에러가 뜬다.

 

    s_ = map(int, s.split())
    s1 = min(s_)
    s_ = map(int, s.split())
    s2 = max(s_)
    
>>
    
    s_ = list(map(int, s.split()))
    s1 = min(s_)
    s2 = max(s_)

s_도 한번에 리스트로 만들어줄 수 있다.

 

 

def solution(s):
    s_ = list(map(int, s.split()))
    s1 = min(s_)
    s2 = max(s_)

    s = s1, s2
    answer = " ".join(list(s))
    return answer

 

TypeError: sequence item 0: expected str instance, int found

 

Return a string which is the concatenation of the strings in the iterable iterable. A TypeError will be raised if there are any non-string values in iterable, including bytes objects. The separator between elements is the string providing this method.

 

.join() 함수는 문자열의 연결인 문자열을 반환한다. 따라서 문자열이 아닌 경우에는 문자열로 바꾸어 주어야한다.

 


    answer = " ".join(list(s))
>>>
    answer = " ".join(map(str, s))


다른 사람 풀이

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

문자열 s를 " " 공백으로 나눠준 후 map(int ,) 를 통해 바로 int로 변환해주고 리스트로 만들었다.

 

리스트의 최솟값을 구한 후 str()을 이용해 문자열로 바꾸고 

" " 공백을 추가하고

리스트의 최댓값을 구한 후 str()로 이용해 문자열로 바꾸어서 바로 반환해주었다.

 

 

복사했습니다!