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