본문 바로가기

개발/알고리즘

[프로그래머스] 정렬 - 가장 큰 수

반응형
 

코딩테스트 연습 - 가장 큰 수

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰

programmers.co.kr

 

입력 & 출력

0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요.

 

풀이

6, 10, 2가 주어졌을 경우
이들을 정수로 만들어 비교한 후 위치를 바꾼다

610 과 106 중 큰 값은 610 이고, 102와 210중 큰 값은 210 이고, 62 와 26 중 큰 값은 62 이니
두 문자를 비교해 정렬한 값은 6 2 10 이 된다
이 추출한 가장 큰 값을 문자열로 만들어 출력해준다

1. 두 문자열을 합해 정수로 만들어 비교한다

Int("\($0)\($1)")! > Int("\($1)\($0)")

2. 배열에 이 과정을 적용시켜 가장 큰 값으로 정렬한다

 

array.sorted{ Int("\($0)\($1)")! > Int("\($1)\($0)")!}

3. 추출한 큰 값을 문자열로 만든다

array.reduce(""){$0 + "\($1)"}

 

Swift 전체 코드

return numbers.sorted{ Int("\($0)\($1)")! > Int("\($1)\($0)")!}.reduce(""){$0 + "\($1)"}

 

반응형