-
[프로그래머스] 가장 큰 수Algorithm/Programmers 2020. 8. 23. 23:02
https://programmers.co.kr/learn/courses/30/lessons/42746
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 ��
programmers.co.kr
풀이과정
처음에 모든 경우의 수를 다 찾아서 정답을 구했으나, 시간 초과 발생했다. 문제에 주어진 제한 사항을 읽어보게 되면
numbers의 최대 길이는 100,000이 된다....
여러 방법 중 오름차순(가장 앞에 올 우선순위 순으로)으로 정렬을 한 후 모두 이어 붙이면 되겠다고 생각했다.
[1, 115] 가 있을 경우 1151과 1115를 비교하여 1115 - 1151 > 0 조건 을 사용하여 0보다 작을 경우 뒤에 문자가 더 우선순위가 높아 순서를 바꿔주면 된다.
마지막에 join을 이용하여 배열을 문자열로 변환하였다.
'00' 이 나올 경우 '0'으로 처리하였다.
소스코드
더보기function solution(numbers) { var answer = numbers.sort(function(a, b) { a = a.toString(); b = b.toString(); return (a + b) - (b + a) > 0 ? -1 : 1; }).join(''); return answer[0] == 0 ? '0' : answer; }
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 (0) 2020.08.25 [프로그래머스] 위장 (0) 2020.08.23 [프로그래머스] 조이스틱 (0) 2020.08.22 [프로그래머스] 타겟 넘버 (0) 2020.08.20 [프로그래머스] 다리를 지나는 트럭 (0) 2020.08.20