• [코테 연습] 가장 큰 수 python

    2020. 4. 20. 20:48

    by. 위지원

    문제 설명

    0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

    예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.

    0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.

     

    제한 사항

    • numbers의 길이는 1 이상 100,000 이하입니다.
    • numbers의 원소는 0 이상 1,000 이하입니다.
    • 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
    from itertools import permutations
    
    def solution(numbers):
        answer = ''
        lis = []
        
        for i in numbers:
            oriValue = str(i)
            mulValue = (oriValue * 3)
            lis.append((oriValue, mulValue))
        
        sortRes = sorted(lis, key = lambda el:el[1], reverse = True)
        
        if sortRes[0][0] == '0':
            return "0"
        
        for val in sortRes:
            answer += val[0]
        
        return answer

     

     

    이번껀 트라이를 좀 이것저것 해봤다.

     

    1. 가능한 모든 수 라이브러리로 구해서 가장 큰 수 리턴 > 시간 초과 데헷 이렇게 쉬울리가 >.< 아콩

    2. key, value를 이용하여 가장 큰 자리수가 같은것 끼리 묶어서 value를 정렬하고 key를 정렬해서 최종적으로 value를 합성 > 단순 정렬으로는 20과 25 와 2를 비교할 수가 없음

    3. 힌트 봄 >.ㅇ 

    4. 롤라운걸 봄,,  2에서 생긴 문제를 *3을 해서 2020과 2222를 비교하면 2가 더 큼 (WOW)

    5. 다시 key,value를 이용해보려함 > 테스트 케이스 통과했으나 제출에서 실패함

    6. 테스트 케이스 더 추가해봄

    7. key가 중복될수가 없다보니 같은 수가 나오면 큰일나는 단점이 있던 것! 

    8. tuple 형태로 바꿈 > 테스트 케이스 통과했으나 제출 마지막 한문제가 실패함

    9. 하........ 인터넷창을 끌까 고민함

    10. 테스트 케이스를 더 구하러 다녀봄

    11. 모든 수가 0인 경우에 문제가 생긴것이였음 예외를 추가함

     

    12. 얏호!

     

    * 문자열 정렬

     

    >>> lis=['101010','666','333'] 
    >>> lis.sort(reverse=True) 
    >>> lis 
    ['666', '333', '101010'] 
    >>> lis=[101010,666,333] 
    >>> lis.sort(reverse=True) 
    >>> lis 
    [101010, 666, 333]

     

    '2020년 > 코테' 카테고리의 다른 글

    [코테 연습] 모의고사 python  (0) 2020.04.22
    [코테 연습] H-Index Python  (0) 2020.04.21
    [코테 연습] K번째수 python  (0) 2020.04.20
    [코테 연습] 베스트 앨범  (0) 2020.04.15
    [코테 연습] 위장  (0) 2020.04.14