JavaScript - 프로그래머스 레벨 : 0(7) - ORDER BY '정답률'

먹보·2022년 11월 20일
0

1. 369게임

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성.

function solution(order) {
    var answer = 0;
    let game = ['3','6','9']
    let orderArr = order.toString().split("");
    for (let i = 0 ; i < orderArr.length ; i ++) {
        for (let j = 0 ; j < game.length ; j ++){
            if (orderArr[i] === game[j]){
                answer++
            }
        }
    }
    return answer;
}

🗒️코멘트 : NULL

2. 합성수 찾기

약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성

function solution(n) {
  const primeNum = num => {
    for (let i = 2; i <= Math.sqrt(num); i++) {
      if (num % i === 0) return true;
    }
    return false;
  };

  let count = 0;

  for (let i = 1; i <= n; i++) {
    if (primeNum(i)) count += 1;
  }

  return count;
}

🗒️코멘트 : 역시 소수를 찾을 때는 에라토스테네스의 체만큼 유용한 것은 없다. https://mygumi.tistory.com/66

3. 중복된 문자 제거

문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성

function solution(my_string) {
    var answer = '';
    for (let i = 0 ; i < my_string.length; i++){
        if (my_string.indexOf(my_string[i]) === i){
            answer += my_string[i]
        }
    }
    return answer;
}

🗒️코멘트 : indexOf는 문자열 내에 같은 문자가 다른 위치에 여러 있더라도 그 문자가 처음 등장하는 위치만 출력하기에 그 성질을 이용해 문제를 해결하였다.

4. 모스 부호

머쓱이는 친구에게 모스부호를 이용한 편지를 받았습니다. 그냥은 읽을 수 없어 이를 해독하는 프로그램을 만들려고 합니다. 문자열 letter가 매개변수로 주어질 때, letter를 영어 소문자로 바꾼 문자열을 return 하도록 solution 함수를 완성

function solution(letter) {
    const 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'
    }
    const arr = letter.split(" ");
    const newArr = arr.map( el => morse[el]).join('');
    return newArr
    
}

🗒️코멘트 : 오호 재밌는 문제였다~!

5. 팩토리얼

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 4 3 2 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성

function solution(n) {
  let factorial = [1, 1];
  for (let i = 2; n > factorial[i - 1]; i++) factorial[i] = factorial[i - 1] * i;
  return factorial[factorial.length - 1] === n ? factorial.length - 1 : factorial.length - 2;
}

🗒️코멘트 :와.....처음으로 팩토리얼을 구현해봤지만...수학 로직이 이렇게도 적용 할 수 있다는 점이 오~~놀라워라!

📌총평 :

프로젝트 이후, 정말 오랜만에 풀어보는 코테! 그 동안의 감이 좀 죽은 것 같지만 오늘은 수학 관련 문제를 풀어본 것 같아 너무도 즐거운 시간이었다. 역시...수학을 전공했던 나로써는 너무나 재밌었던 문제들..수학을 손 놓은지 약 10년이나 되었지만..이런 문제들을 풀 때마다 수학을 다시 공부하고 싶어진다.

profile
🍖먹은 만큼 성장하는 개발자👩‍💻

0개의 댓글