본문 바로가기
Algorithm/정렬

[프로그래머스 lv 2] 가장 큰 수

by HANNI하니 2023. 1. 27.

사용 언어 - Python3

문제 - 가장 큰 수

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

정답

ASCII 문자열 숫자간 크기 비교 정렬 문제 (정답 맞춘 여부 X)

정답 풀이

1. numbers를 str로 바꾼뒤, list 형태로 입력받는다.

 

2. 6, 10, 2의 크기를 비교한다.

원래 숫자에서 비교하면 10>6>2 이지만, "1062"은 가장 큰 수가 아니다.

문자열 ASCII 값으로 비교했을 때 가장 숫자가 큰 값, 6>2>1 순서대로 해야 "6210" 가장 큰수가 나온다.

x*3 각각의 문자열을 3번 반복한다. 666, 101010, 222

가장 첫번째 인덱스인 6, 1, 2의 ASCII를 비교한다. 6>2>1

이 값을 key조건으로 넣어주고 sort()해준다.

이때, reverse=True를 통해 내림차순을 해주면 6,2,10 순으로 나온다.

 

3. join 함수를 이용해 int변환 후 str변환해준다.

만약 numbers가 0,0,0 이면 000으로 출력되기 때문에 다시 int로 변환해주어 0으로 만들고 다시 str로 출력해준다.

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

 


댓글