-
[프로그래머스] 가장 큰 수 / KotlinProgrammers 2022. 2. 23. 14:52
코딩테스트 연습 - 가장 큰 수
0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰
programmers.co.kr
의식의 흐름
1. 완전탐색처럼 처음부터 돌면서 다 붙이고 set에 넣고 max()를 찾을까 생각했었다.
2. 그런데 "3"은 "3333"으로, "31"은 "3131"로 치환해서 풀면 된다는 기막힌 팁을 발견...
3. 1000까지 들어올 수 있기 때문에, 1~3자리를 모두 4자리로 맞추고 비교한 후 sorting하면 된다.
해결 코드
class Solution { fun solution(numbers: IntArray): String { var answer = numbers.sortedByDescending { it.toString().repeat(3).take(4) }.joinToString("") if (answer.startsWith("0")){ return "0" } else { return answer } } }
처음에 answer.toBigInteger() = "0".toBigInteger()로 했더니 소요시간이 어마어마하게 걸림.
애초에 0으로 시작한다는 건 제일 큰 수 겸 포함된 수가 다 0이라는 소리이므로 startsWith로 간단하게 체크할 수 있었다.
좀 아쉬운 건 테스트3이 좀 오래걸리는데.. 통과 (453.82ms, 381MB) 아무래도 repeat(3).take(4)때문인 거 같기도 ㅠㅠ
'Programmers' 카테고리의 다른 글
[프로그래머스] JadenCase 문자열 만들기 / Kotlin (0) 2022.03.02 [프로그래머스] H-Index / 코틀린 (0) 2022.02.26 [프로그래머스] 카펫 / Kotlin (0) 2022.02.23 [프로그래머스] 키패드 누르기 / Kotlin (0) 2022.02.17 [프로그래머스] 크레인 인형뽑기 게임 / Kotlin (0) 2022.02.17