[코테_입문] 문제풀이2

young0_0·2023년 9월 4일
0

conding-test

목록 보기
2/2

2일차 입문 문제 풀이입니다.
내가 푼 문제와 다른풀이를 비교합니다.

문제 1

https://school.programmers.co.kr/learn/courses/30/lessons/120891?language=javascript

나의 풀이

 function solution(order){
 	var answer = 0;
   	// 숫자를 문자열로 변경한다.
   	const str = String(order)
    
    // 조건에 맞는지 확인후 맞으면 1개씩 더한다.
    for(let item of str){
   		if(item === '3' || item === '6' || item === '9'){
        	answer++
        }
    }
 }

다른풀이

let value = order.toString().match(/[369]/g).length ?? []
return value.length
  • 문자열로 변환하고 정규식 표현식을 사용하여 해당 값을 찾고 갯수를 반환
  • null 경우 ??를 활용하여 변경한다.
 order.toString().split('').filter(v => v == '3' || v == '6' || v== '9' ?true:false)
  • 숫자 -> 문자열 -> 배열 을 하고 filter를 통해서 해당 조건을 확인하고 length 반환

  • v => v == '3' || v == '6' || v== '9' ?true:false 을 new set을 활용

 const s = new Set('369')
 order.toString().split('').filter(v => s.has(v) ).length

문제 2

https://school.programmers.co.kr/learn/courses/30/lessons/120887

내 풀이

function solution(i, j, k) {
    var answer = 0;
    var str = Array(j).fill(1).map((_,indx) => indx+1 ).slice(i-1).join('')
    for(let num of str){
       if(Number(num) === k){
          answer++
       }
    }
    return answer;
}
  • j 갯수만큼 index 순서대로 1~j 만큼 넣는다.
  • slice로 i의갯수만큼 자른다.
  • 문자열로 만든다.
  • 문자열로 만든 것을 순회하면서 k와 같으면 1씩 더한다.

다른풀이

function solution(i,j,k){
    let s = ''
    for(i; i <=j; i++){
        s +=i
    }
    return s.split(k).length-1
}
  • i~j 까지 순회하여 문자열로 만든다.
  • s에 문자열 저장 한 것을 split 으로 k기준 배열을 만들고 갯수를 세면 정답보다 1큰수 이므로 -1 을 해준다.
function solution(i,j,k){
    return Array(j-i+1).fill(i).map((v,idx)=> v+idx).join('').split(k).length-1
}
  • Array를 통해 map을 통해 i부터 j까지의 수를 배열로 만든다.
  • join을 통해 문자열로 만든후 다시 1을 기준으로 split를 통해 k기준으로 배열을 만들고 갯수-1을 하면 해당 답을 리턴한다.
profile
그냥하기.😎

0개의 댓글