728x90
시간이 오래 걸렸다 ㅠㅠㅠㅠ 처음 시작할 때는 호기롭게 시작했는데 테스트에서 와장창 틀려버렸다.
1~6 테스트 케이스를 계속 통과 못하다가 했다.
제일 문제였던 2가지 점에 대해서 기록해 보겠다.
우선 정렬이 필요한데 조건이 조금 까다롭다.
1. '23' 와 '2313' 일 때 - 즉 왼쪽부터 같은 숫자가 나오다가 다른 경우
- '23'을 '2313'과 같은 자릿 수가 되도록 이어 붙였다. 결국 자릿수가 중요하기 때문이다.
- '2323' 과 '2313'을 비교해보면 '2323'이 더 크므로 '23'+'2313' = '232313' 이 제일 크다
ex) '85' 와 '8593'을 비교할 때 '8585' 는 '8593'보다 작으므로 '8593' + '85' = '859385' 가 답이다.
ex) '10'와 '100'을 비교할 때 '101'가 '100'보다 크므로 '10'+'100' = '10100' 가 답이다.
ex) '67'와 '677'을 비교할 때 '676' 가 '677' 보다 작으므로 '677' + '67' = '67767'가 답이다.
2. '97' 와 '979' 일때 - 1 과 같은 방법으로 비교가 불가능 하다. '97'을 늘려도 '979'로 같아지기 때문이다.
- 이때는 좀 허무하게도 둘다 해보고 비교해보는 방법으로 해결 가능했다.
- [2-1] '97' '979' : 9 > 7 앞의 수가 뒤의 수보다 클 경우 자릿수가 클 수록 앞에 자리해야 수가 커진다. 97|979 < 979|97
- [2-2] '79' '797' : 7 > 9 앞의 수가 뒤의 수보다 작을 경우 자릿수가 작을 수록 앞에 자리해야 수가 커진다. 79|797 > 797|79
- 배열을 한번 돌면서 2.와 같은 상황 일 경우 직접 '97|979' 또는 '979|97' 를 비교해보면 해결된다......😇
def sorting(num, max_len):
if len(str(num)) < max_len:
num_len = len(str(num))
mul_count = max_len // num_len
add_count = max_len % num_len
num_modified = str(num) * mul_count + str(num)[0:add_count]
return num_modified
else:
return str(num)
def solution(numbers):
answer = ''
max_len = len(str(max(numbers)))
numbers.sort(reverse=True)
numbers = sorted(numbers, key=lambda x: sorting(x, max_len))
for i in range(len(numbers) - 1):
if sorting(numbers[i], max_len) == sorting(numbers[i + 1], max_len):
a = str(numbers[i]) + str(numbers[i + 1])
b = str(numbers[i + 1]) + str(numbers[i])
if a > b:
temp = numbers[i]
numbers[i] = numbers[i + 1]
numbers[i + 1] = temp
for num in reversed(numbers):
answer += str(num)
answer = str(int(answer))
return answer
print(solution([989, 98, 7]))
print(solution([12, 1213]))
print(solution([110, 1]))
print(solution([979, 97, 978, 81, 818, 817]))
# 979 97 978 818 81 817
print(solution([100, 10, 1, 0]))
print(solution([67, 676, 677]))
print(solution([676, 67, 677]))
#677 67 676
print(solution([0, 0]))
# 0
728x90
'TIL' 카테고리의 다른 글
99클럽 코테 스터디 6일차 TIL + 완전 탐색 - 카펫 (0) | 2024.05.28 |
---|---|
99클럽 코테 스터디 5일차 TIL + 정렬 - H-index (0) | 2024.05.27 |
99클럽 코테 스터디 3일차 TIL + Heap - Smallest Number in Infinite Set (0) | 2024.05.25 |
99클럽 코테 스터디 2일차 TIL + 힙 - 디스크 컨트롤러 (0) | 2024.05.24 |
99클럽 코테 스터디 2일차 TIL + 힙 - 더 맵게 (0) | 2024.05.24 |