문제 설명
문자열 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
풀이 과정
- s를 공백으로 자르고 int형으로 변환한다.
- 최대, 최소 찾는다.
- 다시 공백으로 구분해준다.
오답 코드
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()로 이용해 문자열로 바꾸어서 바로 반환해주었다.
'⏰ 코딩테스트 > 프로그래머스' 카테고리의 다른 글
프로그래머스 2단계 - 최소값 만들기 (0) | 2021.01.24 |
---|---|
프로그래머스 2단계 - 멀쩡한 사각형 (0) | 2021.01.22 |
프로그래머스 2단계 - 영어 끝말잇기 (0) | 2021.01.20 |
프로그래머스 2단계 - 소수 만들기 (0) | 2021.01.19 |
프로그래머스 2단계 - 짝지어 제거하기 (0) | 2021.01.18 |