방명록
- [레벨2][정렬] 가장 큰 수2024년 02월 15일 17시 01분 09초에 업로드 된 글입니다.작성자: DandyNow728x90반응형
1. 문제
numbers 배열의 요소는 0~1000의 숫자이다. 이 숫자를 이어 붙여 가장 큰 숫자를 만들어야 한다.
😉 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=python3
2. 풀이
처음에는 for문과 순열을 이용해 풀이했는데 "시간 초과" 되었다. 고민도 하고 힌트도 찾다가 어썸 한 풀이법을 발견했다.
# 파이썬 풀이 def solution(numbers): # 1. 모든 수를 문자열로 변환 numbers = list(map(str, numbers)) # 2. x+y와 y+x를 비교하여 정렬 numbers.sort(key=lambda x: (x * 4)[:4], reverse=True) ''' 코드 설명: sort 메서드의 키에 람다 함수 결과 값이 반환된다. 요소가 "3"이라면 "3333"이 되고 "30"이라면 "3030"이 반환된다. 반환된 키값을 기준으로 내림차순 정렬하면-"3333"이 "3030" 보다 큰 값이므로-"3"이 "30"보다 큰 값으로 정렬된다. ''' # 3. 정렬된 numbers를 이어붙인 뒤 반환 answer = str(int(''.join(numbers))) ''' 코드 설명: 리스트의 모든 요소가 0이라면 0이 반환되어야 한다. 단순히 문자열을 이어붙이기 하면 요소의 수 만큼 불필요한 0이 붙게 된다. "000"을 정수로 변환하면 0이되고, 다시 문자열로 변환한다. ''' return answer print(solution([3, 30, 34, 5, 9])) # "9534330" print(solution([0, 0, 0])) # "0"
728x90반응형'CS > 코딩 테스트' 카테고리의 다른 글
[레벨1][PCCE 기출문제] 10번 / 데이터 분석 - sort() 메서드의 반환값? (0) 2023.12.04 [레벨1] 삼총사 - 자바스크립트에서 조합은 어떻게 구할까? (0) 2023.09.16 [레벨2][파이썬] 더 맵게 (0) 2023.07.18 [레벨1][자바스크립트] 숫자 짝궁 (0) 2023.07.17 [레벨1][파이썬] 숫자 짝궁 (0) 2023.07.17 다음글이 없습니다.이전글이 없습니다.댓글