-
가장 큰 수_정렬_Javascirpt프로그래머스 문제풀이 2021. 8. 8. 17:18728x90
JS
파이썬처럼 생각하면서 JS로 풀면 더 어려웠음
function solution(numbers) { var answer = ''; // a = 6. b = 10 인경우를 생각 // 숫자로 정렬하면 [10, 6, 2] 가 되는데 문자열로 정렬하여 [6, 2, 10]가 되도록 만들어야함 answer = numbers.sort((a, b) => `${b}${a}` - `${a}${b}`).join('') // 0 인 경우 예외처리 && 문자열로 정렬햇기에 내부 번호들이 문자로 변경됨에 따른 "0"비교함 return answer[0] === "0" ? "0" : answer }
Python 풀이
def solution(numbers): answer = '' # numbers의 원소인 1000이하 숫자 비교를 위해 모두 4자리를 만족시켜준다. box = list(map(str, numbers)) """ x*4을 하는 이유? -> num의 인수값이 1000 이하이므로 4자리수로 맞춘 뒤, 비교하겠다는 뜻.이 문제의 핵심이라고 할 수 있다. 문자열 비교는 ASCII 값으로 치환되어 정렬된다. 따라서 6666, 10101010, 2222의 첫번째 인덱스 값으로 비교한다. 6 = 86, 1 = 81, 2 = 82 이므로 6 > 2 > 1순으로 크다. """ box.sort(key=lambda x: x*4, reverse=True) #바로 join(box)를 할 경우 숫자 0에 대해 엉뚱한 값이 나올 수 있기 때문으로 추측 return str(int("".join(box)))
728x90'프로그래머스 문제풀이' 카테고리의 다른 글
기능개발_2LV_스택/큐(Python/JavaScript) (0) 2021.06.26 완주하지 못한 선수(Python, Js) (0) 2021.06.22 힙_이중우선순위큐_Python (0) 2021.06.16 정렬_H Index_Python (0) 2021.06.13 힙_디스크 컨트롤러_Python (1) 2021.06.12