반응형
Notice
Recent Posts
Recent Comments
Link
동캄의 코딩도장
프로그래머스 level2 [가장 큰 수] 파이썬 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
시도 1
#프로그래머스 가장 큰 수
def solution(numbers):
numbers=list(map(str,numbers))
numbers.sort(reverse=True)
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
small_len=min(len(numbers[i]),len(numbers[j]))
for k in range(small_len):
if int(numbers[i][k])<int(numbers[j][k]):
numbers[i],numbers[j] = numbers[j] , numbers[i]
else:
if len(numbers[i])<len(numbers[j]):
if int(numbers[i][k])<int(numbers[j][k+1]):
numbers[i],numbers[j]=numbers[j],numbers[i]
elif len(numbers[i])>len(numbers[j]):
if int(numbers[i][k+1])<int(numbers[j][k]):
numbers[i],numbers[j]=numbers[j],numbers[i]
return ''.join(numbers)
반복문을 반복하면서, 각 자리수를 하나씩 비교하였다. ---> 시간초과
시도2
Ljust()함수를 이용하여 값을 정렬 후, 값을 return하려 했으나 --->실패
시도3
#프로그래머스 가장 큰 수
def solution(numbers):
numbers=list(map(str,numbers))
numbers.sort(key=lambda x:x*3, reverse=True)
return str(int(''.join(numbers)))
결국 다른 사람의 풀이를 통해 문제를 이해했다.
lambda를 이용하여 3번 반복한 값을 비교한다.
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level2 [1차 캐시] 파이썬 (0) | 2021.12.08 |
---|---|
프로그래머스 level2 [구명보트] 파이썬 (0) | 2021.12.08 |
프로그래머스 level2 [가장 큰 정사각형 찾기] 파이썬 (0) | 2021.12.08 |
프로그래머스 level2 [2개 이하로 다른 비트] 파이썬 (0) | 2021.12.08 |
프로그래머스 level2 [예상 대진표] 파이썬 (0) | 2021.12.07 |