반응형
가장 큰 수
일단 제가 풀은 방식은, 다른 분들과 조금 다른 풀이입니다.
다른분들이 사용한 풀이는 제가 생각해낼 수 없는 코드라서,
효율이 더 안좋더라도, 제가 생각해낼 수 있을만한 방법으로 해결했습니다.
문제풀러가기
https://programmers.co.kr/learn/courses/30/lessons/42746?language=python3
문제
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.
예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다.
0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요.
제한 사항
- numbers의 길이는 1 이상 100,000 이하입니다.
- numbers의 원소는 0 이상 1,000 이하입니다.
- 정답이 너무 클 수 있으니 문자열로 바꾸어 return 합니다.
문제 분석
1. 제한 사항에서 원소는 0 이상 1,000이하 이므로, 각 원소를 4번씩 반속하게 한다.
2. 4번씩 반복하는 이유는 1의 자리부터 천의 자리까지 숫자를 비교해봐야 되기 때문이다.
더보기
예)
[6, 10, 2]
일 경우
6666 1010 2222
천의 자리비교했을때 6이 제일 크므로 6을 앞으로 빼준다
1010 2222 에서
백의 자리를 비교했을때, 0 과 2를 비교하면 2가 더 크므로
2를 앞으로 빼준다
마지막 남은 10을 뒤에 붙인다.
코드
def solution(numbers):
number=list(map(str,numbers))
result=[]
a=[]
num=""
for i in number:
result.append(int((i*4)[:4]))
for i,j in zip(result,number):
a.append((i,j))
a=sorted(a,key=lambda x:-x[0])
for j in range(len(a)):
num+=a[j][1]
return str(int(num))
코드 풀이
def solution(numbers):
number=list(map(str,numbers))
result=[] #4번 반복되는,길이가 4인 str(숫자)
a=[] # (반복되는 숫자와, 원래 숫자)가 묶여있는 요소가 담긴 리스트
num="" #정렬된 숫자를 차례로 넣어주기 위한 변수
for i in number:
#4번 반복하고, 길이가4가 될 수 있도록 잘라줌
result.append(int((i*4)[:4]))
for i,j in zip(result,number):
a.append((i,j)) # i:새로 만든 숫자 j:원래 숫자
a=sorted(a,key=lambda x:-x[0]) #새로 만든 숫자, x[0]부터 비교
for j in range(len(a)):
num+=a[j][1]
return str(int(num))
# num = "0000"일 수도 있으므로, int로 바꿔준 후
#다시 str로 바꿔줌
다른 사람의 코드
def solution(numbers):
numbers = list(map(str, numbers))
numbers.sort(key=lambda x: x*3, reverse=True)
return str(int(''.join(numbers)))
* 짧지만 제 로직으로는 생각할 수 없습니다 ㅠ_ㅠ...
코드 풀이
1. numbers안의 원소들을 아스키코드로 비교함.
반응형
'코딩테스트 > 코딩테스트 문제' 카테고리의 다른 글
코딩테스트 준비 - 프로그래머스: 행렬 테두리 회전하기 풀이(파이썬) (2) | 2021.06.30 |
---|---|
코딩테스트 준비 - 프로그래머스:뉴스 클러스터링 풀이/isalpha() (파이썬) (0) | 2021.06.29 |
코딩테스트 준비 - 프로그래머스: 게임 맵 최단거리 풀이/BFS (파이썬) (4) | 2021.06.28 |
코딩테스트 준비 - 프로그래머스: 소수찾기Lv2 풀이/permutations에 대하여 (파이썬) (0) | 2021.06.27 |
코딩테스트 준비 - 프로그래머스: 더 맵게 풀이/heap에 대하여 (파이썬) (0) | 2021.06.27 |
댓글