Step 3-3: 풀어서 내걸로 만들자! "가장 큰 수"

data_hamster·2023년 4월 16일
0

학습 주제
실제 코딩실습

학습 내용

아이디어

  • 문자열의 길이는 최대 100,000으로 모든 조합을 쓰기에는 크기가 매우 큼.
  • 각 원소는 최대 4자리 수
  • 원소가 0, 0, 0 으로 조합될 경우도 생각해야함. (str은 000으로 이어 붙힘)
  • '3'과 '30' 은 '330', '303'으로 3이 우선되어야 함. 페딩기법 사용

알고리즘

  • numbers를 문자열 리스트로 변환
  • 문자열을 정렬하는데, 내림차순, key = lambda x: x*4[:4] 4자리수까지로 적용
  • 큰 수가 없어 맨 앞자리가 0인 경우(0000) answer = '0'
  • 또는 str(int(answer)

내 답안

def solution(numbers):
    answer = ''
    numbers = [str(x) for x in numbers]
    numbers.sort(key = lambda x:(x*4)[:4], reverse=True)
    if numbers[0] == '0':
        numbers = '0'
    answer = ''.join(numbers)
    return answer

어려운 점

크게 어려움은 없었다. 다만 lambda x: x*4[:4]로 표현하니 컴파일이 안되었다.
lambda x: (x * 4)[:4] 로 정정하여 풀었다. 아직 람다식에 익숙하지 않다. 많은 예제를 접해봐야할 것 같다.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글