function solution(arr, divisor) {
var answer = [];
for(let num of arr) {
if(num % divisor === 0) {
answer.push(num);
}
}
if(answer.length === 0) {
answer.push(-1);
}
answer.sort(function(a, b) {
return a- b;
});
return answer;
}
생각의 흐름대로 작성한 코드이다.
1. 배열 내의 숫자를 divisor로 나눈 것 중 나머지가 0인걸 찾아서 배열에 넣는다.
2. 배열 내 모든 숫자의 나머지가 0이 아닐 수 있기 때문에 빈배열을 생각하고 빈 배열일 경우 -1를 넣는다.
3. 정렬한다.
통과는 되었지만 작성하면서도 코드가 너무 길다고 생각했다.
다른 분의 풀이에 filter가 있는 것도 있길래 filter를 써서 수정해보았다.
function solution(arr, divisor) {
var answer = [];
answer = arr.filter(num => num % divisor === 0)
answer.length === 0 ? answer.push(-1) : null;
answer.sort((a,b) => a- b)
return answer;
}
역시 메서드를 잘 써야한다.
sort내의 함수도 화살표 함수를 썼고 한 줄에 쓸 수 있으니 return도 생략이 되었다.
코드 길이가 절반으로 줄어들었다!
내가 쓴 코드랑 같은가 싶어서 다른 분들의 코드를 다시 유심히 봤더니 역시 내 코드는 부족했다.
function solution(arr, divisor) {
var answer = arr.filter(v => v%divisor == 0);
return answer.length == 0 ? [-1] : answer.sort((a,b) => a-b);
}
나는 아직 한 줄에 하나의 생각만 하게되어서 null 값을 준 부분이었는데 확실히 바로 붙여도 되는 부분이었다.
항상 느끼고 있지만 나도 모르게 for문을 먼저 생각하게된다.
메서드를 먼저 생각할 수 있도록 해야겠다.