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

먹보·2022년 11월 11일
0

1. 개미군단

개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성

function solution(hp) {
    let c = parseInt(hp/5);
    let c_r = hp % 5;
    let s = parseInt(c_r/3);
    let w = c_r % 3;
    let answer = c + s + w
    return answer;
}

🗒️코멘트 : 수학적으로 로직을 더욱 간단하게 짤 수 있을 것 같지만, 피차일반

2. 가위바위보

가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성

//너무 어렵게 풀은 것 같은데...
function solution(rsp) {
    let arr = [];
    let rsp_arr = rsp.split("");
    for (let i = 0 ; i < rsp_arr.length ; i++){
        if (rsp_arr[i] === '2'){
            arr.push(rsp_arr[i].replace('2','0'))
        } else if (rsp_arr[i] === '0'){
            arr.push(rsp_arr[i].replace('0','5'))
        } else {arr.push(rsp_arr[i].replace('5','2'))}
    } 
    let answer = arr.join("")
    return answer;
}
//아...객체로 돌면서 바꿔주는 방법이..왜 바로 생각나지 않았을까
function solution(rsp) {
  const win = { 0: 5, 2: 0, 5: 2 };
  return [...rsp].map(num => win[num]).join('');
}

🗒️코멘트 : 이런 비슷한 문제를 다른 곳에서 풀었던 기억이 있는데, 그 때 당시에는 객체로 접근해서 풀었었는데..지금 와서는 비효율적인 방법으로 풀고 있다.

3. n의 배수 고르기

정수 n과 정수 배열 numlist가 매개변수로 주어질 때, numlist에서 n의 배수가 아닌 수들을 제거한 배열을 return하도록 solution 함수를 완성

function solution(n, numlist) {
    var answer = [];
    numlist.forEach((el) => (el % n) === 0 ? answer.push(el) : el)
    return answer;
}

🗒️코멘트 : 얏호! forEach삼항연산자 요긴하게 썼다~

4. 대문자와 소문자

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성

function solution(my_string) {
    let arr = my_string.split('')
    let answer_arr = [];
    for (let i = 0 ; i < my_string.length ; i++){
        if (arr[i] === arr[i].toLowerCase()){
            answer_arr.push(arr[i].toUpperCase())
        } else {answer_arr.push(arr[i].toLowerCase())}
    }
    let answer = answer_arr.join("")
    return answer;
}

🗒️코멘트 : 하..괄호 오타를 찾지 못해서 헤맸다.

5. 가장 큰 수 찾기

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성

function solution(array) {
    var answer = [];
    answer.push(Math.max(...array))
    answer.push(array.indexOf(Math.max(...array)))
    return answer;
}

🗒️코멘트 : NULL

6. 약수 구하기

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성

function solution(n) {
    var answer = [];
    for (let i = 0 ; i <= n ; i++){
        if (n % i === 0){
            answer.push(i);
        }
    }
    answer.sort((a,b)=>a-b)
    return answer;
}

🗒️코멘트 : NULL

7. 문자열 정렬하기

영어 대소문자로 이루어진 문자열 my_string이 매개변수로 주어질 때, my_string을 모두 소문자로 바꾸고 알파벳 순서대로 정렬한 문자열을 return 하도록 solution 함수를 완성

function solution(my_string) {
    return my_string.toLowerCase().split("").sort().join("")
}

🗒️코멘트 : sort()에 빈칸을 넣어서 사용할 시 알파벳 순서 대로 적용

8. 주사위의 개수

머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성

function solution(box, n) {
    var answer = 1;
    for (let i = 0 ; i < box.length ; i++){
        answer *= parseInt(box[i]/n)
    }
    return answer;
}

🗒️코멘트 : 오호! *= 이것도 먹히는 구만요!

9. 피자 나눠 먹기

머쓱이네 피자가게는 피자를 여섯 조각으로 잘라 줍니다. 피자를 나눠먹을 사람의 수 n이 매개변수로 주어질 때, n명이 주문한 피자를 남기지 않고 모두 같은 수의 피자 조각을 먹어야 한다면 최소 몇 판을 시켜야 하는지를 return 하도록 solution 함수를 완성

function solution(n) {
  const getLCM = (a, b) => {
    let lcm = 1;
    while ((lcm % a !== 0 || lcm % b !== 0) && lcm < a * b) lcm += 1;
    return lcm;
  };

  return getLCM(n, 6) / 6;
}

🗒️코멘트 : NULL

10. 외계행성의 나이

우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성.

function solution(age) {
    let age_alpha = { '0':'a','1':'b','2':'c','3':'d','4':'e','5':'f','6':'g','7':'h','8':'i','9':'j'}
    age_arr = age.toString().split('')
    let answer = [];
    for (let el of age_arr){
        answer.push(age_alpha[el])
    }
    return answer.join("");
}

🗒️코멘트 : NULL

📌총평 :

오늘 컨디션이 좋지 않아 푸는 속도가 많이 느려졌을 뿐만 아니라 오타도 많이 나 생각보다 재밌는 시간을 보내지 못해 아쉬웠다 ㅠㅠ

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

0개의 댓글