on my way
[프로그래머스 코딩테스트 연습 > 정렬] 가장 큰 수 (Python3) Lv2 본문
반응형
https://programmers.co.kr/learn/courses/30/lessons/42746
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 틀린 코드
def solution(numbers):
return ''.join(map(str,sorted(numbers, key=lambda x : x*pow(10,(len(str(max(numbers)))-len(str(x)))), reverse=True)))
3과 30중에 3이 큰 걸 캐치하지 못해 틀림
# 정답 코드
def solution(numbers):
return str(int(''.join(sorted(map(str,numbers), key=lambda x:x*3, reverse=True))))
이 문제는 주어진 숫자 리스트를 조합하여 가장 큰 수를 만드는 문제이다.
이를 해결하기 위해 문자열 비교를 사용해야한다.
숫자를 문자열로 변환한 후, 각 숫자를 최대 길이(1000 이하)로 맞추기 위해 3번 반복한 후 비교한다.
이렇게 하면 문자열 비교를 통해 숫자 비교와 유사한 효과를 얻을 수 있다.
핵심 아이디어
- 숫자를 문자열로 변환: 숫자를 문자열로 변환한다.
- 문자열 비교: 문자열 비교는 첫 번째 문자부터 아스키 코드로 비교한다. 예를 들어 '121'과 '12'의 경우, 문자열 비교에서는 '121121121'과 '121212'를 비교한다.
- 3배 반복: 주어진 숫자의 최대 길이가 3자리이므로, 각 숫자를 3번 반복하여 길이를 맞춘다. 예를 들어, '3'은 '333', '31'은 '313131', '310'은 '310310310'로 변환된다.
- 정렬: 변환된 문자열을 기준으로 정렬한다.
- 결과 반환: 정렬된 문자열을 결합하여 결과를 반환한다. 마지막에 str(int(''.join(numbers)))를 사용하여 '000'과 같은 경우를 '0'으로 처리한다.
수정한 코드
def solution(numbers):
return str(int(''.join(sorted(map(str,numbers), key=lambda x:x*3, reverse=True))))
반응형
'algorithm > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 로또의 최고 순위와 최저 순위 (Python3) Lv1 (1) | 2024.08.22 |
---|---|
[프로그래머스 코딩테스트 연습] 땅따먹기 (Python3) Lv2 (0) | 2024.08.07 |
[프로그래머스 코딩테스트 연습] 기사단원의 무기 (Python3) Lv1 (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습 > 정렬] 소수 찾기 (Python3) Lv1 (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습] 예산 (Python3) Lv1 (0) | 2024.08.02 |