ZZIN33
re-code-cord
ZZIN33
전체 방문자
오늘
어제
  • 분류 전체보기 (52)
    • Paper (4)
      • Generative Model (2)
      • Segmentation (1)
      • 모델 경량화 (1)
    • Study (34)
      • AI (10)
      • MLOps (8)
      • CS (4)
      • OpenCV (1)
      • Algorithm (9)
      • ETC (2)
    • Project (6)
    • ETC (8)
      • 부스트캠프 AI Tech (2)
      • 도서 리뷰 (5)

블로그 메뉴

  • Home
  • About
  • Github

인기 글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ZZIN33
Study/Algorithm

[프로그래머스] 가장 큰 수 (Python)

[프로그래머스] 가장 큰 수 (Python)
Study/Algorithm

[프로그래머스] 가장 큰 수 (Python)

2021. 12. 5. 17:14

정수 리스트에서 조합 가능한 가장 큰 수를 찾는 문제. 
처음에는 직관적으로 가능한 조합을 모두 찾은 뒤 그중에서 가장 큰 수를 출력해봤다.

import itertools

def solution(numbers):
    answer = []
    
    number_list = list(itertools.permutations(numbers, len(numbers)))
    for number in number_list:
        answer.append("".join(map(str,number)))
        
    return max(answer)

당연하게도 순열로 가능한 조합을 만드는 과정이 시간이 많이 걸려서, 시간 초과로 fail.
다음으로 생각한 방법은 숫자의 앞자리를 기준으로 내림차순으로 숫자를 정렬하기.

def solution(numbers):
    
    numbers = list(map(str, numbers)) # str 기준으로 비교, 숫자의 앞자리로 비교하기 위함
    numbers.sort(key=lambda x: x*3, reverse=True) # 숫자 뒤에 0이 들어가는 경우 순서를 뒤로하기 위함
    
    return str(int(''.join(numbers))) # e.g. '0000'을 '0'로 바꿔주기 위함

numbers.sort(key=str, reverse=True)를 통해서 어느 정도 정답에 근접했지만, '30'과 '3'처럼 뒤에 0으로 끝나는 숫자가 뒤로 배치되어야 할 필요가 있었다.
먼저 str로 변환한 뒤 key=lambda x : x*3 을 통해서 전체 자릿수를 맞춰준 뒤 비교를 통해서 이를 해결했다.
최종적으로 '0000' 과 같은 숫자를 '0'으로 바꿔주기 위해서 최종 결과를 int로 한번 감싸준다.

저작자표시 (새창열림)

'Study > Algorithm' 카테고리의 다른 글

[백준] 2578번 : 빙고 (Python)  (0) 2022.01.17
[백준] 1655번 : 가운데를 말해요 (Python)  (0) 2021.12.06
[프로그래머스] 주식가격 (Python)  (0) 2021.12.02
[백준] 9663번 : N-Queen (Python)  (0) 2021.11.30
[백준] 5430번: AC (Python)  (1) 2021.11.29

    티스토리툴바

    개인정보

    • 티스토리 홈
    • 포럼
    • 로그인

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.