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
- level3
- 다익스트라
- dict
- 스택
- MYSQL
- 브루트포스
- 운영체제
- level2
- BFS
- 힙
- 코딩테스트
- 가상메모리 관리
- programmers
- 백준
- BOJ
- N과M
- python
- 재귀
- level1
- 파이썬
- DP
- 프로그래머스
- 구현
- 수학
- dfs
- 그리디
- level0
- 다이나믹 프로그래밍
- 딕셔너리
- 가상메모리
Archives
- Today
- Total
동캄의 코딩도장
프로그래머스 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 |