프로그래머스 - 가운데글자가져오기
February 24, 2020
가장 큰 수
-
이해
- 주어진 숫자로 최고의 높은 수를 구하여라
-
계획
- 문자열로 비교하여 내림차순으로 정렬하자.
-
실행
describe('제일 큰수 찾기', () => { it('최종', () => { expect(solution([0,0,0,0,0])).toEqual('0'); expect(alignNum([3, 30, 34, 5, 9])).toEqual([9,5,34,3,30]); expect(someoneSolution([3, 30, 34, 5, 9])).toEqual('9534330'); }); }); const alignNum = (numbers) => { return numbers.sort((a,b)=>String(b).repeat(4).slice(0,4) - String(a).repeat(4).slice(0,4)) } const solution = numbers => { const answer = alignNum(numbers); if(answer[0] === 0) return '0' else{ return answer.join('') } } const someoneSolution = (numbers) => { var answer = numbers.map(v=>v+'') .sort((a,b) => { return (b+a)*1 - (a+b)*1 }) .join(''); console.log(answer) return answer[0]==='0'?'0':answer; }
-
반성
- 문자열로 정렬하면, 30, 3을 구별하지 못한다.
- 힌트를 보니까 숫자를 크게 만든 다음, 비교하였다. 결국 자릿수를 들어가는 숫자를 비교하는 것이니까.. 역시 다들 똑똑하다
- repeat()함수를 통해서 제한조건의 값이 1000이하라고 해서 4자리로 만들었다.
- ‘0’만 들어왔을 경우에 대비해서 3항 방정식을 썻다.