일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 어렵다
- 대학원일기
- WebOS
- 자바
- git
- 안드로이드스튜디오
- build
- 휴학
- LEVEL2
- SQL
- BFS
- androidstudio
- Github
- py
- D3
- Matrix Factorization
- Python
- level3
- 컨트리뷰톤
- java
- 컴퓨터비전
- level1
- SWEA
- 파이썬
- level4
- 다시풀기
- 내휴학생활중의아주큰일
- 프로그래머스
- MSBuild
- 대학원
- Today
- Total
bit가 눈 앞에서 왔다갔다
Py) 프로그래머스 42746 본문
https://programmers.co.kr/learn/courses/30/lessons/42746
이렇게 푸니까 시간초과가 나왔다.
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 |