https://school.programmers.co.kr/learn/courses/30/lessons/12910
1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하라 - 주어진 자료는 무엇인가?
- arr = 자연수를 담은 배열
- 정수 divisor - 조건은 무엇인가?
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- array는 길이 1 이상인 배열입니다.
2. 계획
- 이 문제를 푸는데 있어서 유용하게 쓸 수 있는 지식은 무엇인가?
- filter
- map을 사용해서 arr의 elements를 하나씩 순회한다.
- 이때 elements가 divisor로 나눠지는 경우의 숫자만 filter를 이용해서 거른다.
- 이 새로운 배열을 오름차순으로 정렬 시킨다.
- 이 배열의 길이가 0 초과면 이 배열을 리턴하고 그렇지 않으면 [-1]을 리턴한다.
3. 실행
- 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (arr, divisor) => {
const newArr = arr.filter(number => number % divisor === 0).sort((a,b) => a-b);
return (newArr.length > 0) ? newArr : [-1];
};
test('divide', () => {
expect(solution([5, 9, 7, 10],5)).toEqual([5, 10]);
});
처음에 코드를 작성하고 테스트를 돌려보면서 오름차순 정렬이 안되어 있다는 것을 알게 되었다.
그래서 배열을 오름차순 정렬을 시켜줬다.
그리고 elements가 divisor로 나눠지지 않는 경우에는 [-1]을 리턴해야하는데
이 부분에 대한 처리를 안해줘서 테스트가 통과되지 않았다.
그 후에 처리를 해주고 테스트를 전부 다 통과 하긴 했는데
처음부터 계획을 작성하는 단계에서 조건이랑 문제를 다시 한번 더 생각해보고 작성해야겠다는 생각이 들었다.
앞으로는 문제랑 조건을 꼼꼼히 봐야겠다.
'코테연습' 카테고리의 다른 글
78. 타켓 넘버 Javascript (0) | 2022.07.26 |
---|---|
77. 두 정수 사이의 합 Javascript (0) | 2022.07.20 |
75. 소수찾기 Javascript (0) | 2022.07.05 |
74. 피보나치 수 Javascript (0) | 2022.07.04 |
73. 프린터 Javascript (0) | 2022.07.01 |
댓글