[Coding Test] 숫자 짝꿍

이묘·2022년 12월 19일
0

CodingTest

목록 보기
33/41
post-thumbnail
function solution(X, Y) {

  arrX = X.split('')
  arrY = Y.split('')

  answer = '';

  for (let i=0; i<10; i++) {

    count_i_from_X = arrX.filter(number => parseInt(number) === i).length;  // i인 숫자의 갯수 추출
    count_i_from_Y = arrY.filter(number => parseInt(number) === i).length;
    
    const count = Math.min(count_i_from_X, count_i_from_Y)  // 더 작은 값(공통갯수) 찾기
    answer += String(i).repeat(count); // 문자열 i('1', '2' ,,,)을 count만큼 반복해서 answer에 추가
  }

  if(answer === ''){
    return '-1'
  }
  else if(parseInt(answer) === 0){
    return "0"
  }
  else{
    return answer.split('').sort((a,b) => Number(b) - Number(a)).join('') // 0~9로 구성된 answer을 내림차순 정렬하여 문자열로 재구성
  }
}




후기

  • 타임아웃 잡는데 고생 좀 많이 함

  • include() 메서드는 그 안에서 루프가 돌음 -> for문을 2번 쓰는 것과 같은 느낌

  • filter()을 사용

for (let i=0; i<10; i++) {
 	if(X.includes(i) && Y.includes(i)){
    ~~~
    }
}
  // 안쪽에 for문이 2번 동작하는 것과 같기 때문에 시간을 더 잡아먹는다
  // filter 함수를 바로 사용해서 갯수를 바로 리턴하면 시간을 줄일 수 있음
profile
본질을 공부해야 응용도 하지 않을까

0개의 댓글