FrontEnd :-)

programmers 개미 군단 본문

JavaScript/Algorithm

programmers 개미 군단

code10 2023. 3. 10. 02:24

개미 군단

🙋 (문제)

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


제한사항

  • hp는 자연수입니다.
  • 0 ≤ hp ≤ 1000

입출력 예

hpresult

23 5
24 6
999 201

🅰️ (제출 답) 

function solution(hp) {
    let first = 0;
    let two = 0;
    let three = 0;
    first = parseInt(hp/5);

    if(first >= 0){
        two = parseInt((hp-first*5)/3);
    }
    if(two >= 0){
        three = parseInt(hp-(first*5+two*3));
    }
    return first + two + three;
}

||

V

function solution(hp) {
    const first = parseInt(hp/5);
    const two = parseInt((hp-first*5)/3);
    const three = parseInt(hp-(first*5+two*3));
    return first + two + three;
}

✅ (풀이 과정)

최소 개미 수를 구하는 것이므로, 가장 공격력이 좋은 개미부터 최대한으로 차출?하고 그 다음 그 다음 모으면 된다. 나누기에서 몫만 필요해서 parseInt를 썼다.

+ 처음에 if 조건 넣느라 코드가 길어졌는데 필요 없는 것 같다. 

+ parseInt 와 Math.floor 는 양수에서는 차이가 없고, 음수에서 차이를 보인다. parseInt는 소수점을 버리고(음수에선 올림인 격), Math.floor는 내림이라.

 

 

🤼‍♀️  다른 풀이 1

return Math.floor(hp/5)+Math.floor((hp%5)/3)+(hp%5)%3;

=> 나머지 생각이 잠깐 스쳤지.. 나머지 활용!!

Math.floor()는 버림.

Math.ceil() : 올림 Math.floor() : 버림 Math.round() : 반올림

 

🤼‍♀️  다른 풀이 2

    const 장군개미 = Math.floor(hp / 5);
    const 병정개미 = Math.floor((hp - (장군개미 * 5)) / 3);
    const 일개미 = hp - ((장군개미 * 5) + (병정개미 * 3));
    return 장군개미+병정개미+일개미;

=> 변수명. 가독성이 좋다.

'JavaScript > Algorithm' 카테고리의 다른 글

1. Big O Notation(표기법)  (0) 2023.03.12
programmers 최빈값 구하기  (0) 2023.03.11
programmers 피자 나눠 먹기 (2)  (0) 2023.03.09
programmers 대문자와 소문자  (0) 2023.03.09
programmers 분수의 덧셈  (0) 2023.03.08
Comments