Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다! 😮😊
def solution(n):
return int(''.join(sorted(str(n), reverse=True)))
def solution(cards1, cards2, goal):
i = j = 0
for g in goal:
if i<len(cards1) and cards1[i] == g: i += 1
elif j<len(cards2) and cards2[j] == g: j += 1
else: return "No"
return "Yes"
"No"를 return하고, 반복문을 마칠 때까지 그러한 경우가 없었다는 것은 만들 수 있다는 의미이므로 "Yes"를 return해 준다.의식의 흐름
[6, 10, 2]를 내림차순으로 정렬하면 [10, 6, 2]가 되고, 이대로 이어붙이면(재배치하면) 1062가 된다.[3, 31, 35] 에 을 붙여서 자릿수를 맞추고 내림차순으로 정렬하면 [35, 31, 30]이 되고, 이대로 원본을 이어붙이면 35313 이 된다. (35331이 더 크게 재배치하는 방법이므로 틀렸다.)3이 31보다 더 높은 가치를 가져야 하므로, 원본의 맨 뒷자리 수를 이어붙여서 자릿수를 맞춰주면 될 것 같다.[97, 978] 을 이러한 방법으로 자릿수를 맞추고 내림차순으로 정렬하면 [978, 977]이 되고, 이대로 원본을 이어붙이면 97897 이 된다. (97978이 더 크게 재배치하는 방법이므로 틀렸다.)97이 978보다 더 높은 가치를 가져야 하므로, 단순히 를 붙여주면 될까?81, 818를 생각해 보면, 이러한 방법으로 자릿수를 맞추고 내림차순으로 정렬하면 [819, 818] 이 되고, 이대로 원본을 이어붙이면 81818 이 된다. (81881이 더 크게 재배치하는 방법이므로 틀렸다.)def solution(numbers):
new_nums = []
for n in numbers:
new_n = str(n)
while len(new_n) < 4:
new_n += new_n[:4-len(new_n)]
new_nums.append((new_n, n))
answer = ''.join(str(n) for _, n in sorted(new_nums, reverse=True))
return "0" if answer[0] == "0" else answer
numbers 에 만 존재할 땐 “00” 이 아닌 "0"을 반환해야 한다.str(int(answer))를 이용해 보았으나, numbers의 길이(개수)가 이상 이하이고, 각각의 원소가 이상 이하이므로 최악의 경우 int로 바꾸는 데에 40만 번의 연산, 다시 str로 바꾸는 데에 40만 번의 연산을 하게 된다.answer의 맨 앞이 0이라면 "0"을 return하고, 그렇지 않다면 으로 시작되지 않는다는 것이 보장되므로 answer를 그대로 return한다.def solution(numbers):
answer= ''.join(map(str, sorted(numbers, key=lambda x: str(x)*3, reverse=True)))
return "0" if answer[0] == "0" else answer