오늘 푼 문제
1. K번째 수 / Lv.1 / 시간 : 8분
programmers.co.kr/learn/courses/30/lessons/42748?language=javascript
function solution(array, commands) {
const answer = commands.map(arr=>{
let [start, end, index] = arr;
return array.slice(start-1,end).sort((a,b)=>a-b)[index-1];
})
return answer;
}
2. 가장 큰 수 / Lv.2 / 시간 : 41분 (타임오버)
programmers.co.kr/learn/courses/30/lessons/42746?language=javascript
// function solution(numbers) {
// var answer = '';
//
// let sorted = numbers.sort((a,b)=>{
// const x = (''+a+b)*1;
// const y = (''+b+a)*1;
// return y-x;
// })
//
// answer = sorted.reduce((acc,cur)=>{
// return acc+cur;
// },'');
//
// return answer[0]==='0'? '0' : answer;
// }
function solution(numbers) {
var answer = '';
answer = numbers.map(k=>k+"").sort((a,b)=>{
return (b+a)*1 - (a+b)*1;
}).reduce((acc,cur)=>{
acc+=cur;
return acc;
},"");
return answer[0]==='0'?'0':answer;
}
헤맸던 부분
1. sort의 compare func 구조 어떻게 자릿수 비교를 할지 고민했는데 그냥 둘이 합쳐보고 비교하면 굳이 자릿수 하나하나 비교 안 해도 됨.
2. 테스트 케이스 11번만 계속 오류가 났는데 [0,0,0,0] 이런식으로 모두 0이 주어졌을 때 '0'이 아닌, '0000'이 리턴되는게 문제였다.
노트
1. array.slice(start,end)
- 원본배열 유지.
- start 인덱스는 포함, end 인덱스는 불포함
2. 비구조화 할당 배열에도 적용 가능
- let arr = [4,2,3] 일 때, let [a,b,c] = arr // 결과 : a=4, b=2, c=3
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 고득점 키트 - 해시1 (0) | 2020.10.12 |
---|---|
[프로그래머스] 고득점 키트 - 정렬3 (0) | 2020.09.22 |
[해커랭크] 알고리즘을 최적화 해보자 Array Manipulation (0) | 2020.09.14 |
[해커랭크] 알고리즘을 최적화 해보자 Ransom Note (0) | 2020.09.11 |
[해커랭크] New Year Chaos (1) | 2020.09.10 |