ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 개미군단 (Math.floor()몫구하기)
    Coding Test/프로그래머스 Lv.0 2023. 6. 16. 09:34

    장군개미 공격력 5

    병정개미 공격력 3

    일개미 공격력1

     

    Ex) 사냥감 hp 23 = (5*4) + (3*1)  장군개미4마리+병정개미1마리  => 5마리

    Ex) 사냥감 hp 24 = (5*4) + (3*1) + (1*1) 장군개미 4마리 + 병정개미1마리 + 일개미 1마리 = > 6마리

     

     

     

    로직.

    1.(조건문1) 사냥감(hp)을 5로 나눈다.
    2.(조건문1) 나머지가 없을 경우, 5의 갯수만큼이 답이다.
    3.(조건문1) 나머지가 있을 경우, 몫으로 할당된 5의 갯수만큼을 변수선언한다.
    4. (3)에서 남은 나머지를 3으로 나눈다.
    5. (조건문2) 나머지가 없을 경우, 3의 갯수만큼 + (3)에서 선언한 5의 갯수만큼이 답이다.
    6. (조건문2) 나머지가 있을 경우, 몫으로 할당된 3의 갯수만큼을 변수선언한다.
    7. (조건문2) (6)에서 남은 나머지의 수 + (3)몫으로 할당된 5의 갯수 + (6)몫으로 할당된 3의 갯수가 답이다.

     

     

    나의 풀이

    function solution (hp) {   
        var answer = 0;
        
        if(hp % 5 === 0){      
            var answer = Math.floor(hp/5)    || 5로 나눴을때 나머지없이 딱 떨어지면 그 몫이 답
            return answer
        } else {
            var king = Math.floor(hp/5)       ||king = 장군의 수
            var hpRest = hp%5                 ||hpRest = 장군의 수만큼 빠진 나머지 hp
        }
        
        if(hpRest % 3 === 0){
            var kingTwo = Math.floor(hpRest/3)    || kingTwo = 병정의 수
            var answer = king + kingTwo           || 3으로 나눴을때 딱 떨어지면 병정수+장군수가 답
            return answer 
        } else {                    
            var hpRestTwo = hpRest%3                  || hpRestTwo (장군수+병정수)만큼 빠진 나머지 hp
            var answer = hpRestTwo + king + kingTwo   || 일개미 = 1이므로 hpRestTwo = 일개미의수
            return answer                             || 장군수+병정수+일개미수
        }
    }

     

    오답.... 3개중 하나 맞음

     

    두번쨰 

    function solution (hp) {    
        var answer = 0;
        if(hp % 5 === 0){      
            var answer = Math.floor(hp/5)
            return answer
        } else if (hp % 5 !== 0) {
            var king = Math.floor(hp/5)     
            var hpRest = (hp - (king*5))    
        }
        if(hpRest % 3 === 0){
            var kingTwo = Math.floor(hpRest/3)   
            var answer = king + kingTwo           
            return answer 
        } else if (hpRest % 3 !== 0) {                    
            var hpRestTwo = (hpRest - ((king*5)+(kingTwo*3)));            
            var answer = hpRestTwo + king + kingTwo
            return answer
        }
    }

    역시오답. 3개중 하나맞고 나머진 null 나옴

     

     

    정답

    function solution (hp){
        let a = Math.floor(hp/5)  
        let b = Math.floor((hp - (a * 5)) / 3) 
        let c = hp - (a * 5) - (b * 3)
        return a + b + c
    }

    a는 hp를 5로 나눈 몫(장군개미수)

    b는 hp에서 장군개미수*5만큼을 뺀것을 3으로 나눈 몫 (병정개미수)

    c는 전체 hp에서 장군개미수*5와 병정개미수*3을 뺀 값 (일개미수)

    a+b+c

    댓글

Designed by Tistory.