Level 0) 수학, 문자열, 해시, 완전탐색, 조건문

Doozuu·2023년 1월 4일
0

프로그래머스 (JS)

목록 보기
10/183

📌 문제 1. 개미 군단

function solution(hp) {
    return parseInt(hp / 5) + parseInt(hp % 5 / 3) + parseInt(hp % 5 % 3) 
}


📌 문제 2. 모스부호 (1)

function solution(letter) {
    let morse = { 
    '.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
    '--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
    '--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
    '...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
    '-.--':'y','--..':'z'
   }
    return letter.split(" ").map(n=> morse[n]).join('')
}

⭐️ split("")와 split(" ")의 차이점

split("")는 한 글자씩 따옴표로 나눠주고, split(" ")는 공백을 기준으로 따옴표로 나눠준다.
ex)
"abc bc dt".split("") -> ["a","b","c","b","c","d","t"]
"abc bc dt".split(" ") -> ["abc","bc","dt"]



📌 문제 3. 가위 바위 보

조건문으로 풀어도 되겠지만, 숫자끼리 짝이 지어진다는 것을 이용해 객체를 이용하는 방법을 생각해보았다.(좋은 아이디어였다!!)

function solution(rsp) {
    var answer = '';
    let obj = {
        "2" : 0,
        "0" : 5,
        "5" : 2
    }
    return answer += rsp.split('').map(n => obj[n]).join('');
}


📌 문제 4. 구슬을 나누는 경우의 수 ⭐️

팩토리얼 구하기 -> 함수와 반복문을 이용 !

function solution(balls, share) {
  function factorial(n) {
      var result = 1;
      for(var i=2; i<=n; i++) result *= i;
      return result;
  }
  if(balls === share){
      return 1;
  }else{
     return Math.round(factorial(balls) / (factorial(balls-share) * factorial (share)));
  }
}

재귀함수를 이용한 풀이

const 팩토리얼 = (num) => num === 0 ? 1 : num * 팩토리얼(num - 1)

function solution(balls, share) {
return Math.round(팩토리얼(balls) / 팩토리얼(balls - share) / 팩토리얼(share))
}

참고) Math.round를 사용하는 이유

숫자 연산중 오류가 발생할 수 있기 때문.
https://joooing.tistory.com/entry/Javascript-%EC%86%8C%EC%88%98%EC%A0%90floating-point-%EA%B3%84%EC%82%B0-%EC%98%A4%EB%A5%98

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글