
def solution(s):
s = list(map(int,s.split()))
return str(min(s)) + " " + str(max(s))
배울점
map(적용할 함수, 적용할 객체)list() ,tuple() 같은 객체로 감싸서 봐야됨.def solution(s):
answer = ''
'''
1. 공백으로 구분되니깐 공백으로 split하기
2. split한 값들을 모두 int형으로 바꾸기
3. max, min찾아서 str형태로 반환
'''
#1. 공백으로 split하기
string = s.split(" ")
#2. split한 값들 모두 int형으로 바꾸기
for i in range(len(string)):
string[i] = int(string[i])
answer+=str(min(string))
answer += ' '
answer += str(max(string))
return answer


def solution(A,B):
answer = 0
ans = []
544
421
'''
곱의 누적 합이 최소인 값을 return하기
1. A와 B에서 최댓값을 비교하기
2. 더 큰곳에서 최댓값 뽑기
3. 더 작은곳에서 최솟값 뽑기
4. 뽑은 최대 최솟값 뽑아서 리스트에 넣기
5. 2,3,4알고리즘 반복해서 나온 리스트의 모든 값 더해서 리턴하기
max, min을 매번 루프마다 사용하면 비효율적이니깐 처음에 sort를 해놓은 뒤, 리스트의값을 하나씩 뽑아서
비교만하면 O(1)임
'''
#A랑 B를 내림차순으로 정리
A.sort(reverse=True)
B.sort(reverse=True)
for i in range(len(A)):
if A[0]>B[0]: #최댓값이 A가 더 클때
ans.append(A[0]*B[len(B)-1])
B.pop(len(B)-1)
A.pop(0)
else: #최댓값이 B가 더 클때
ans.append(B[0]*A[len(A)-1])
A.pop(len(A)-1)
B.pop(0)
return sum(ans)
배울점
max(), min()이 루프 안에 들어가면 여러번 연산하게 돼서 O($n^2$)가 됨 → sort() 로 처음에 한번 정렬해두고 인덱스로 최소, 최댓값을 사용하면 루프안에서 max,min 을 안써도됨.

def solution(s):
answer = ''
'''
문자열 s가 주어질때 공백으로 구분된 단어의 첫 알파벳을 대문자로 바꾸기
단 첫문자가 알파벳이 아닐때는 다음단어를 검사하기
1. 공백을 기준으로 list로 split하기
2. 각 list의 원소를 루프로 돌면서 첫 문자가 알파벳인지 확인
3. 알파벳이면 i.list()[0]을 upper()적용한 다음에 다시 join()으로 한 string으로 만들기
4. 다시 list를 하나의 string으로 join하기
5. 문자열의 나머지 알파벳을 검사하며 만약 처음이 아닌데, 대문자면 소문자로 전부 고쳐야됨.
공백이 2개이상이면 한개씩으로만 나누고 나머지 공백은 다음단어 앞으로 넘겨버리기
다음단어에서는 검사할때 공백은 건너뛰고 첫 알파벳부터 검사해야됨.
'''
s = s.split(" ")
for i in s:
if len(i)>1:
k = 0
while i[k]==' ':
k+=1
if ord('a') <= ord(i[k]) <= ord('z'): #첫 문자열이 'a'와 'z'사이에 있는 알파벳일때
i = list(i)
i[k] = i[k].upper()
answer +=" "+ " "*k + i[k]+"".join(i[k+1:]).lower()
else: #첫문자가 대문자거나 숫자면 그냥 바로 넣어버림
i = list(i)
answer += " " + " "*k + i[k] +"".join(i[k+1:]).lower()
else: #i길이가 1일때
if i != ' ' or ord('a') <= ord(i) <= ord('z'):
i = i.upper()
answer+=" " + i
else:
answer += " " + i
answer = list(answer)
answer.pop(0)
return "".join(answer)
배울점
Upper, lower, listslicing 사용하면 됨.