programmers.co.kr/learn/courses/30/lessons/42746
이번 문제는 조금은??나름은?? 멋있게 푼거 같아서 뿌듯하다. 시간도 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
'문제풀이 > 프로그래머스' 카테고리의 다른 글
소수 찾기 / 프로그래머스 코딩테스트 / programmers / level2 / 완전탐색 / Java (0) | 2021.05.12 |
---|---|
베스트앨범 / 프로그래머스 연습문제 / programmers / level3 / 해시 / JavsScript (0) | 2021.05.11 |
다리를 지나는 트럭 / 프로그래머스 연습문제 / programmers / level2 / 스택,큐 / javascript (0) | 2021.05.09 |
프린터 / level2 / 프로그래머스 연습문제 / programmers / 스택,큐 / java (0) | 2021.05.08 |
기능개발 / 프로그래머스 연습문제 / programmers / level2 / java / 스택,큐 (0) | 2021.05.07 |