1. SQL
SQL 코딩 테스트를 진행하다가 정답이 맞는데 도저히 맞지 않아서 10분을 헤맸던 것 같다.
진행 문제: 고양이와 개는 몇 마리 있을까
select ANIMAL_TYPE, count(1) as count
from
(SELECT ANIMAL_TYPE, NAME
from ANIMAL_INS
where ANIMAL_TYPE in ('Cat', 'Dog')
) a
group by 1
위 코드로 진행을 했는데 정답 예시와 동일한데도 오답이 나왔다..
뭐지? 해서 계속 보다가
where ANIMAL_TYPE like '%Cat%' or ANIMAL_TYPE like '%Dog%'
select ANIMAL_TYPE,
case when ANIMAL_TYPE = 'Cat' then count('Cat')
when ANIMAL_TYPE = 'Dog' then count('Dog') end count
from ANIMAL_INS
group by 1
알고 보니, CAT 먼저 정렬해달라는 것이 있었다.
order by
가 없어도 CAT 먼저 정렬되었길래 넘겼었는데 오답이 된 것이었다...
처음에 짠 쿼리에 order by 1
추가해주니 정답 처리 되었다 ㅠ
2. JavaScript
진행 문제 : 나누어 떨어지는 숫자 배열
이번에는 정렬 부분에서 잘 되지 않아서 조금 헤맸다.
입출력 예)
arr | divisor | return |
---|---|---|
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
(오답 코드)
function solution(arr, divisor) {
let answer = [];
arr.forEach(e => {
if ((e%divisor)===0) {
answer.push(e);
}
})
if (answer.length === 0)
answer.push(-1);
return answer.sort();
}
2, 3 번은 잘 되는데 1번이 정렬이 내림차로 거꾸로 되는 상황이 발생했다..
그래서 Array 함수 정렬부분을 다시 복습하고 오름차순으로 확실하게 정렬하게끔 바꾸어 주니 정답 처리 되었다.
(정답 코드)
function solution(arr, divisor) {
let answer = [];
arr.forEach(e => {
if ((e%divisor)===0) {
answer.push(e);
}
})
if (answer.length === 0)
answer.push(-1);
// 오름차순 정렬
answer.sort((a,b) => {
return a > b ? 1 : -1;
});
return answer;
}
(정확성 및 속도)
앞으로 비슷한 문제에서 filter() 함수를 사용해봐야겠다.