오늘의 코딩테스트 한줄 - 개미 군단

Edwin·2023년 2월 5일
0
post-thumbnail

개미 군단

프로그래머스, 개미 군단

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

  • 제한사항 : hp는 자연수이고, 0 ≤ hp ≤ 1000
  • 풀이(1) : hp가 23이므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.
  • 풀이(2) :hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.

01 나의 풀이 살펴보기

장군개미 5, 병정개미 3, 일개미 1

체력 23의 여치 사냥, 일개미 23마리 데려가도 되지만, 더 적은 병력으로 사냥할 수 있지 않을까?
사냥감의 체력이 hp로 주어질 때, 몇마리가 필요할까?

function solution(hp) {
   let general = parseInt(hp/5)
   let soldier = parseInt((hp%5)/3)
   let scv
   
   if(parseInt((hp%5)%3) == 0) {
         scv = 0
       } else {
         scv =  parseInt(((hp%5)%3)/1)
       }
     
   return general+soldier+scv
  
}

코린이라서 정말 간단하게 작성해보았다. 변수general은 먼저 hp을 5로 나눈 몫을 대입시켰다. 변수soldier은 hp를 5로 나눈 나머지를 3으로 나눈 몫을 대입시켰다. 그리고 변수scv는 우선 선언과 초기화만 설정하고, 값은 주지 않았다. 이유는 일개미까지 출정하지 않고 병정개미에서 끝날 가능성도 존재하기 때문이다.

그래서 변수scv에는 조건문으로 값을 할당했다. 만약 나머지 값이 0이라면, 0을 대입시키고, 그렇지 않으면, 일꾼개미가 몇마리 출정해야 하는지 계산된 값을 할당하게 하였다.

그리고 return으로 출정할 세개의 계급의 각 수를 더해주었다. 이를 간단하게 풀이할 수 있을까? 물론이다.

02 다른 풀이 살펴보기

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

변수를 선언하지 않고, 바로 결과값에 내용을 기록했는데, 일개미의 출정에 대해서는 나와 다르게 작성했다. parseInt(((hp%5)%3)/1에서는 만약 ((hp%5)%3) == 0 이라면 코드가 실행되지 않을 것이다. 그러나 나머지 값을 구한다면? parseInt((hp%5)%3), 0이면 0이 반환될 것이고, 다른 값이면 다른 값이 출력될 것이다. 오늘도 이렇게 잘 배운다.

profile
신학전공자의 개발자 도전기!!

0개의 댓글