처음 생각은 숫자를 전체적으로 나열해서 큰수를 찾아낼까 생각을 했지만..
for 문으로 10000개 이하의 원소를 돌리는 것을 나타내기가 너무 길고 험한 길..
다시 생각을 바꿔 큰 수만 나오면 되니
숫자의 규칙을 살펴봤다.
맨 앞의 숫자가 큰 수가 앞으로 가는 순서가 가장 큰수가 나올 수 있는 조건이란 것을 깨닫고,
10자리 100의 자리를 확인하기 위해 10과 100으로 나눠 나온 값을 비교해보자고 생각했고,
0의 경우 어떻게 처리를 할 것인지 생각을 하여 if 문을 돌리는.. 와중 또.. 머리가 깨지는 것같았다.
이번에는 3 과 30, 300의 처리에서 문제가 생겼다 같은 3 으로 나왔을 경우? 다시 0을 붙여서 비교함?
이건 코드로 짤 수 있다고 생각은 하지만.. 내 능력이 힘들다..
원점.. 다시 생각을 했을 때 앞의 자리로만 비교하는 것은 문자로 만들면 가능하지 않나 생각을 한 후
문자로 맵핑하여 다 정렬 시킴 가능하다..
하지만 그럴경우 3보다 30이 앞서 나가 330이 큰 수로 나오지 않고 303으로 나오는 것을 보고
멘붕...
3자리 수로 만들기 위해서 문자열*3을 이용해서 쉽게 풀 수 있는 사람이 있었다..
아직 부족한듯........
sort는 key 파라미터가 존재한다.
lambda는 for문 혹은 if문 코드를 짧게 만들어 줄수 있다.
# 내가 쓴 코드
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(reverse = True) # 파라미터에 key = lambda x: x*3으로 정답이 갈림
return str(int(''.join(numbers)))
[Error]tensorflow 설치 시 killed (0) | 2021.04.30 |
---|---|
효율성 있는 파이썬 코드 만들기 (0) | 2021.04.22 |
[coding_test] K번째수 (0) | 2021.04.20 |
코딩 테스트 (0) | 2021.04.02 |
가상환경 (0) | 2021.03.08 |