diff --git a/src/programmers/Lv_2/README.md b/src/programmers/Lv_2/README.md index 716987f8..1d7b068a 100644 --- a/src/programmers/Lv_2/README.md +++ b/src/programmers/Lv_2/README.md @@ -8,4 +8,5 @@ |5|[최솟값 만들기](./accMin.js)|22.06.08|O|X| |6|[숫자의 표현](./expressionNumber.js)|22.06.11|O|X| |7|[짝지어 제거하기](./mateRemove.js)|22.06.13|O|X| -|8|[프린터](./printer.js)|22.06.24|X|다시풀었다| \ No newline at end of file +|8|[프린터](./printer.js)|22.06.24|X|다시풀었다| +|9|[가장 큰 수](./greatestNumber.js)|22.07.01|X|다시| \ No newline at end of file diff --git a/src/programmers/Lv_2/greatestNumber.js b/src/programmers/Lv_2/greatestNumber.js new file mode 100644 index 00000000..b1be041e --- /dev/null +++ b/src/programmers/Lv_2/greatestNumber.js @@ -0,0 +1,58 @@ +// 내 처음 풀이 +/* + numbers 배열을 정렬하는데 자릿수가 2이상이면 split해서 끝자리로 내림차순 정렬 해주고, + 다른 경우에는 전부 앞자리로 내림차순 정렬을 함 + + 근데 정확성 6.7/100.0 ㅎㅎ +*/ +function solution(numbers) { + let answer = ''; + + numbers.sort((a,b) => { + let arrA = a.toString().split(''); + let arrB = b.toString().split(''); + + if(arrA.length > 1 && arrB.length > 1) { + return arrB[1] - arrA[1]; + } + + return arrB[0] - arrA[0]; + }); + + return answer = (numbers.join('')); +} + + + +// 다른 풀이보고 변형한 것 +function solution(numbers) { + let answer = ''; + numbers.sort((a,b) => { + const newA = (a+'' + b+'')*1 // 문자열a+b 한 값과 + const newB = (b+'' + a+'')*1 // 문자열b+a 한 값을 비교해서 + return newB - newA; // 내림차순으로 정렬 + }) + answer = numbers.join('') + if(answer[0] === '0') return '0' + return answer; +} + + + +// 위의 코드랑 같은데 더 간단한 듯 +function solution(numbers) { + let answer = numbers.map(v=>v+'') // 문자열로 변환 + .sort((a,b) => (b+a) - (a+b)) // 숫자 크기로 비교 + .join(''); + + return answer[0]==='0'?'0':answer; +} + + + +// 핵심은 문자열 더해서 비교해본 후 정렬하기! +function solution(numbers) { + let answer = numbers.sort((a, b) => `${b}${a}` - `${a}${b}`).join(''); + return answer[0] === '0' ? '0' : answer; +} +