본문 바로가기

코테

[프로그래머스] <가장 큰 수> 파이썬

programmers.co.kr/learn/courses/30/lessons/42746

 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

def solution(numbers):
    answer = []
    for num in numbers :
        answer.append(str(num))
    answer.sort(reverse = True, key= lambda x : (x[0:1],x[1:2],x[2:3],x[3:4]))
    return "".join(answer)
테스트 1
입력값 [6, 10, 2]
기댓값 "6210"
실행 결과 테스트를 통과하였습니다.
테스트 2
입력값 [3, 30, 34, 5, 9]
기댓값 "9534330"
실행 결과 실행한 결괏값 "9534303"이(가) 기댓값 "9534330"와(과) 다릅니다.

테스트 결과 (~˘▾˘)~

2개 중 1개 성공

 

남의 풀이 참고

def solution(numbers):
    numbers = list(map(str, numbers))
    numbers.sort(key=lambda x: x*3, reverse=True)
    return str(int(''.join(numbers)))

 

343434랑 555 string 비교하면 555가 더 크다고 나오더라

if numbers[2]*3 < numbers[3]*3 : print(1)
else : print(2)
--------------
1

 

그래서 sort 부분만 바꿈

def solution(numbers):
    answer = []
    for num in numbers :
        answer.append(str(num))
    answer.sort(reverse = True, key= lambda x :x*3)
    return "".join(answer)

정확성 테스트

테스트 1 통과 (44.62ms, 23.2MB)
테스트 2 통과 (23.63ms, 17.1MB)
테스트 3 통과 (60.72ms, 27.4MB)
테스트 4 통과 (1.57ms, 10.3MB)
테스트 5 통과 (40.14ms, 21.7MB)
테스트 6 통과 (34.63ms, 20.1MB)
테스트 7 통과 (0.02ms, 10.1MB)
테스트 8 통과 (0.01ms, 10.2MB)
테스트 9 통과 (0.01ms, 10.1MB)
테스트 10 통과 (0.01ms, 10.1MB)
테스트 11 실패 (0.03ms, 9.99MB)

채점 결과

정확성: 90.9

합계: 90.9 / 100.0

 

개 띠용

 

def solution(numbers):
    answer = []
    for num in numbers :
        answer.append(str(num))
    answer.sort(reverse = True, key= lambda x :x*3)
    return str(int("".join(answer)))

정확성 테스트

테스트 1 통과 (776.26ms, 23.3MB)
테스트 2 통과 (239.32ms, 17.1MB)
테스트 3 통과 (1325.58ms, 27.4MB)
테스트 4 통과 (2.10ms, 10.5MB)
테스트 5 통과 (615.09ms, 21.8MB)
테스트 6 통과 (475.02ms, 20.2MB)
테스트 7 통과 (0.03ms, 10.3MB)
테스트 8 통과 (0.03ms, 10.2MB)
테스트 9 통과 (0.03ms, 10.2MB)
테스트 10 통과 (0.03ms, 10.2MB)
테스트 11 통과 (0.05ms, 10.3MB)

채점 결과

정확성: 100.0

합계: 100.0 / 100.0

 

일단 확실히 map을 쓰는게 빠른데

왜 int로 바꿨다가 str하는건지 모르겠네

어 진자 왠지 모르겠네

대박적