bit가 눈 앞에서 왔다갔다

Py) 프로그래머스 42746 본문

Algorithm/Prob

Py) 프로그래머스 42746

헬린인형 2022. 1. 28. 17:53

https://programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

이렇게 푸니까 시간초과가 나왔다.

from itertools import permutations
def solution(numbers):
    answer = ''
    candi = []

    perm = list(map(list,permutations(numbers, len(numbers))))
    print(perm)

    for i in perm:
        tmp = str(i[0])
        for j in range(1,len(i)):
            tmp += str(i[j])
        candi.append(tmp)

    answer=str(max(candi))

    return str(answer)

이중반복문을 없애보았다.

from itertools import permutations
def solution(numbers):
    answer = ''
    candi = []

    perm = list(map(list,permutations(numbers, len(numbers))))
    print(perm)

    for i in perm:
        i = map(str, i)
        candi.append("".join(i))

    answer=str(max(candi))

    return str(answer)

여전히 시간초과가 떳다.

현실을 부정하고 싶지만 permutaions가 시간이 오래 걸려서 그런 것 같다.

구글링해봄. 나는 처음보는 함수들이 많았는데 다들 그 함수가 뭔지 설명은 없고 코드만,, 나만 몰랐던건가,,

 

구글링 1 - comparator.

자바에 comparator라는게 이거랑 비슷한 개념인거 같은데, 

comparator는 음수가 나오면 list에서 아래로 내려간다고 한다.

아무리 찾아도 설명이 안나와서 포기. 딱히 쓰이지 않는 것 같으니 시간 낭비 그만하자.

구글링 2 - lambda.

람다에 대한 설명은 비교적 많았으나, 이해는 잘 안감

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x*3, reverse=True)
    return str(int(''.join(numbers)))

1. numbers에 들어있는 수 하나하나 x에 대입해서 정렬을 수행함

2. reverse = True니까 큰 수부터 정렬된다

Q. x*3은 뭘까?

추정: x하나하나 3번씩 반복해서 비교하는건가..?

하다가 같이 스터디하는 오빠가 그런 이야기를 했던거 같아서 그 분 블로그 들어가서 봤는데 맞았음. (남이 미리 고생 해놓은 것을 참고하면 내 시간을 아낀다)

[6,10,2]에서

666 / 101010 / 222 이렇게 되는데, str인 상태로 비교가 되고 있으니 666/222/101010 순으로 정렬되는 것

 

*

functools.cmp_to_key(func) : 키함수 https://docs.python.org/ko/3/library/functools.html

비교 함수는 두 개의 인자를 받아들이고, 그들을 비교하여, 작으면 음수, 같으면 0, 크면 양수를 반환

키함수 - 순서, 묶이는 것에 대한 함수를 말함

sort(key=lambda)

lambda

 

+

3시에 퇴근했는데 일찍 집 가는거 포기하고 알고리즘 푼 나 자신 칭찬해

설날에 푹 쉬장

반응형

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

Py) 프로그래머스 43163 단어 변환  (0) 2022.02.04
Py) 프로그래머스 42842 카펫  (0) 2022.02.03
Py) 프로그래머스 42583  (0) 2022.01.28
Py) 프로그래머스 43238  (0) 2022.01.27
Py) 프로그래머스 42898  (0) 2022.01.26
Comments