본문 바로가기
Solution_/프로그래머스

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

by 낭람_ 2020. 8. 15.
반응형

문제 설명

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

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

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

 

제한 사항

  • numbers의 길이는 1 이상 100,000 이하입니다.
  • numbers의 원소는 0 이상 1,000 이하입니다.
  • 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.

입출력 예

numbers return
[6, 10, 2] 6210
[3, 30, 34, 5, 9] 9534330

 

[python]

def solution(numbers):
    number_list = [str(num) for num in numbers]
    for i in range(1, len(numbers)) :
        for j in range(1, len(numbers)) :
            if int(number_list[j-1]+number_list[j]) < int(number_list[j]+number_list[j-1]) :
                number_list[j], number_list[j-1] = number_list[j-1], number_list[j]
    return str(int(''.join(number_list)))

 

처음으로 도전한 코드다.. 버블 정렬을 이용해서 하려고 했으나.. 시간 초과로 실패했다..

 

def check(n1: str, n2: str) -> bool :
    return n1+n2 < n2+n1

def solution(numbers):
    num_list = [str(num) for num in numbers]
    i = 1
    while i < len(numbers) :
        idx = i
        while idx > 0 and check(num_list[idx-1], num_list[idx]) :
            num_list[idx-1], num_list[idx] = num_list[idx], num_list[idx-1]
            idx -= 1
        i+=1
        
    return str(int(''.join(num_list)))

 

이번에는 삽입정렬로 해보았다.. 우씨 이것도 시간 초과다.. check함수는 너무 지저분해 보여서 함수로 변경했다.

 

def check(n1: str, n2: str) -> bool :
    return n1+n2 < n2+n1

def solution(numbers):
    num_list = [str(num) for num in numbers]
    num_list.sort(reverse=True)
    i = 1
    while i < len(numbers) :
        idx = i
        while idx > 0 and check(num_list[idx-1], num_list[idx]) :
            num_list[idx-1], num_list[idx] = num_list[idx], num_list[idx-1]
            idx -= 1
        i+=1
        
    return str(int(''.join(num_list)))

 

이다음으로 도전한 코드다.. 우씨.. num_list.sort(reverse=True)를 추가했다.

 

삽입 정렬은 최악의 상황의 경우에는 O(n^2)까지 올라가기 때문에 삽입 정렬 전에 정렬을 한번 해주었다..

 

으.. 오늘 아침부터 붙잡고있었는데 너무 오래 걸렸다..

반응형

'Solution_ > 프로그래머스' 카테고리의 다른 글

[프로그래머스] 위장  (2) 2020.08.17
[프로그래머스] H-Index  (0) 2020.08.15
[프로그래머스] 더 맵게  (0) 2020.08.14
[프로그래머스] 다트 게임  (0) 2020.08.14
[프로그래머스] 전화번호 목록  (0) 2020.08.13

댓글