728x90
😄 아이디어
1. 문자열의 정렬방식 이해 필요 (가장 첫 글자부터 아스키코드로 변환해 비교)
2. _!number!_의 조건이 힌트 (1,000 이하) 👉 문자열을 최소 3회 이상 반복시키고 비교
def solution(numbers):
nums = list(map(str, numbers))
nums.sort(key = lambda x : x * 4, reverse = True)
return str(int(''.join(nums)))
😄 오답
# 오답!
from functools import cmp_to_key
def solution(numbers):
nums = sorted(numbers,
key = cmp_to_key(getBigNum))
#print('nums', nums)
return str(int(''.join(map(str, nums))))
def getBigNum(x, y):
if x == y:
return 0
sX = str(x); sY = str(y)
maxIndex = max(len(sX), len(sY))
if int(sX[0]) > int(sY[0]):
return -1
elif int(sX[0]) < int(sY[0]):
return 1
else:
standard = str(max(x, y))
for i in range(1, maxIndex):
sXval = int(standard[0]); sYval = int(standard[0])
if i < len(sX):
sXval = int(sX[i])
if i < len(sY):
sYval = int(sY[i])
if sXval > sYval:
#print("x = " + str(x) + ", y = " + str(y) + ", sXval = " + str(sXval) + ", sYval = " + str(sYval) + " return -1")
return -1
elif sYval > sXval:
#print("x = " + str(x) + ", y = " + str(y) + ", sXval = " + str(sXval) + ", sYval = " + str(sYval) + " return 1")
return 1
if len(str(x)) > len(str(y)):
return -1
else:
return 1
✔️ 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42746#