본문 바로가기
문제풀이/프로그래머스

가장 큰 수 / 프로그래머스 연습문제 / programmers / level2 / 정렬 / JavsScript

by RUCKUS 2021. 5. 10.

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

 

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

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

programmers.co.kr

이번 문제는 조금은??나름은?? 멋있게 푼거 같아서 뿌듯하다. 시간도 1시간도 안걸렸고 ㅎㅎ

 

가장 큰 수가 될 수 있는 조합을 찾는 문제인데, 결국에는 배열은 어떤식으로 정렬하는지에 대한 문제이다.

 

그리하여 처음에 이중 for문을 작성하여 선택정렬로 가장 우선 순위가 높은 숫자를 맨 앞에 가져오고,

해당 인덱스를 건너뛰고 그 다음 인덱스부터 다시 선택정렬 하는 식으로 코드를 작성하였는데...

값은 정상적으로 나오나 5개의 케이스가 시간 초과로 틀렸다 ㅠㅠ

 

고민하던 와중에 갑자기 불현듯 자스의 sort함수를 이용해보자는 생각이 들었다.

 

보통은 

 

arr.sort(function(a, b) {

   return a-b; 아니면 b-a;

}

 

이런식으로 간편하게 정렬을 사용했을 것이다.

 

학원 선생님께 배울때 무언가 변화가 필요할때는 -1로 리턴하면 된다고 했던 것을 기억해냈다!.

 

그리하여 아래와 같이 코드를 작성하였다.

 

function test() {

	var number = [1, 10, 2, 20, 3, 30, 4, 40, 5, 50, 9998];

    solution(number);

}

function solution(numbers) {

    console.log(numbers)

    numbers.sort(function(a, b)  {
    // sort함수 안에 function을 이용하여 a와 b두 수를 비교해준다.

        var temp1 = '' + a + b;
        var temp2 = '' + b + a;
        // 변수 2개를 임의로 선언해서 각각 숫자를 이었을때의 값으로 초기화
        if (temp1 > temp2) return -1;
        // temp1이 크면 앞에 숫자가 더 우선 순위 이므로 놔둔다
        if (temp1 == temp2) return 0;
        // 같으면 놔둔다
        if (temp1 < temp2) return 1;
        // temp2가 크면 뒤에 숫자가 우선 순위 이므로 바꾼다.

      });

      console.log(numbers) 
    var answer = '';
    var zeroChk = 0;
    for (let i = 0; i < numbers.length; i++) {

        zeroChk += numbers[i];
        answer += numbers[i];
    }

    console.log(zeroChk)

        if (zeroChk == 0) {
            answer = '0';
        } 

        console.log(answer)

        return answer;
}

zeroChk 변수는 해당 값들이 0일 경우 '0'을 리턴해주기위해 합을 더하려고 만든 변수다.

 

오늘도 1문제 성공!

 


[깃허브]

https://github.com/RUCKUSJERRY/practiceOfJava/blob/main/Prs_Pratice/src/com/level02/mostBigestNum.js

 

RUCKUSJERRY/practiceOfJava

Contribute to RUCKUSJERRY/practiceOfJava development by creating an account on GitHub.

github.com