스터디/알고리즘
가장 큰 수
세졍
2024. 1. 19. 21:36
문자열정렬
알고있어야 할것
ex )
numbers = [6,10,2,38]
numbers = list(map(str,numbers)) # 각 배열을 문자열로 바꾸는것
# 문자열 배열도 숫자가 아니지만 정렬이됨 sort()가능
# '5' ,'10' 를 오름차순 정렬하면 각 첫자리숫자로 비교하므로 '10' '5' 순으로 정렬
numbers.sort(key=lambda x : x*4 ,reverse=True) # 각문자열을 반복하는 문자열을 만들고 문자열 내림차순하기
print(numbers) #['6', '38', '2', '10'] 문자열 *4 한값이아니라 그냥 원본 배열에서 정렬된 상태로 출력
def solution(numbers):
answer = ''
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x *3 , reverse=True)
for i in numbers:
answer += i
return answer
numbers = [6,10,2]
print(solution(numbers))
# 이렇게 하니 테스트케이스 11번빼고 통과..
# return str(int(answer))
반례생각하기 numbers = [0,0,0] 이면 000 으로 출력함 -> 문자열 0으로만 출력되야함
def solution(numbers):
lst = list(map(str,numbers))
lst = sorted(lst,key=lambda x:x*3,reverse=True)
if lst[0] == '0':
return '0'
return ''.join(lst)
numbers = [0,0,0]
print(solution(numbers))
# 정수를 이어붙여 만들수있는 가장 큰수를 출력 (문자열로바꿔서)
모든테스트 케이스 통과 코드..