Bleeding edge

[프로그래머스] 가장 큰 수 - 자바스크립트 본문

코딩테스트 공부

[프로그래머스] 가장 큰 수 - 자바스크립트

codevil 2022. 4. 8. 14:42

https://programmers.co.kr/learn/courses/30/lessons/42746

 

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

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

programmers.co.kr

 

function solution(numbers) {
    let list = []
    for (let i = 0; i < numbers.length; i++) {
        list.push(String(numbers[i]))
    }
    list.sort((a, b) => b.concat(a) - a.concat(b))
    let answer = list.join('')
    return answer[0] === "0" ? answer[0] : answer
}

concat으로 부텼을때, 더 큰 값을 앞으로 뺀뒤 join시켰다. 

다른사람의 풀이

 

function solution(numbers) {
    let strings = numbers.map(num => num + "");
    const answer = strings.sort((a, b) => (b + a) - (a + b)).join("");
    return answer[0] === "0" ? "0" : answer;
}

내기억으로 분명 저방법을 써서 안됬던거같은데 아마 내가 괄호를 빼서 안됬던거 같다.. 

 

 

피드백

사실 한개의 케이스 빼고는 모두 쉽게 해결했다. 1개의 케이스 같은경우에는 return의 statement로 해결했다. 바로 첫번째 글자가 0이면 000000과 같은 값이 나올텐데 이는 문자라 이렇게 나온거지 실제는 0으로 출력되야하기 때문이다. 그래도 5분이내에 boundary condition에 대해서 생각해서 해결했으며, 앞으로도 boundary condition에 대해서 자주 생각해볼 것.