반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- freenom
- 프로그래머스 큰 수 만들기
- kafka 설치
- 데이터파이프라인
- Catalyst Optimizer
- 지연연산
- Databricks
- EMR 구조
- Spark 최적화
- 런타임데이터영역
- 프로그래머스
- 하둡에코시스템
- ORACLE MSSQL차이
- 데이터엔지니어링
- Spark
- 빌드도구
- 카프카
- 하둡1.0
- 스파크
- 프로그래머스힙
- ORACLE문법
- 서버간 복사
- 하둡2.0
- lazy evaluation
- AWS Crawler
- 하둡
- 데이터 수집
- 문맥교환
- 실행엔진
- 데이터베이스복사
Archives
- Today
- Total
띵유로그
[프로그래머스][정렬]가장 큰 수 본문
반응형
처음 풀이 : permutation을 이용한 완전 탐색
def solution(numbers):
answer = ''
from itertools import permutations
case=[str(i) for i in numbers]
cases=list(permutations(case,len(numbers)))
joincases=["".join(i) for i in cases]
sorted_case=sorted(joincases)
answer=sorted_case[len(sorted_case)-1]
return answer
위와 같이 itertools permutation 함수를 사용하니 직관적이면서 쉽게 답을 구했지만 시간초과로 fail이다.
연산자 오버로딩을 해야하나? 라는 생각이 들었다.
그런데, 3은 30보다 우선순위가 높아야하고 37보다 우선순위가 낮아야 한다는 점에서 조건이 매우 까다로웠다.
(첫째자리수보다 큰 수면 우선순위를 높게주고, 더 작으면 우선순위를 낮게줘야하나... 고민에 빠졌다.)
검색을 하다보니 더 쉽게 비교하는 방법이 있었다. 직접 숫자를 붙여 본 후에 비교하면된다...! (흑...뭐한거지 지금까지...)
3, 30을 비교할때 330, 303 으로 만든 후에 비교하는 것이다.
import functools
def compare(l,r):
return (int(l+r)>int(r+l))-(int(l+r)<int(r+l))#l+r이 더 크면 1(r이 앞) , r+l이 더 크면 -1 (l이 앞)
def solution(numbers):
answer=''
if max(numbers)==0:
return '0'
numbers=[str(i) for i in numbers]
sorted_numbers=sorted(numbers, key=functools.cmp_to_key(compare), reverse=True)#역순으로 정렬해야함
for i in sorted_numbers:
answer+=i
return answer
1. 정렬 기준을 새로 만들어 sort 함수에 적용
---> functools. cmp_to_key(함수)
2. 음수 반환 -> 앞 매개변수 먼저 / 양수 반환 -> 뒷 매개변수 먼저
내림차순이니 reverse 해야함
배운 점
1. 여러개의 조합을 비교할 때는 붙이는 조건을 생각하기보다, 일단 붙이고 비교하는게 효과적이다...........
2. functools -> cmp_to_key
3. ''.join(list) 리스트 안의 모든 원소를 이어붙임
반응형
'알고리즘' 카테고리의 다른 글
[프로그래머스][완전탐색]모의고사 (0) | 2020.09.06 |
---|---|
[프로그래머스][정렬]H-Index (0) | 2020.09.06 |
[프로그래머스][정렬]K번째 수 (0) | 2020.08.24 |
[프로그래머스][힙]더맵게 (0) | 2020.08.23 |
[프로그래머스][큐][프린터] (0) | 2020.08.23 |
Comments