프로그래머스 개미 군단/Programmers 💻

GyuriKim·2023년 1월 11일

Programmers

목록 보기
6/10
post-thumbnail

개미 군단

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


제한사항

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

입출력 예시

  • 입출력 예 #1
    hp가 23이므로, 장군개미 네마리와 병정개미 한마리로 사냥할 수 있습니다. 따라서 5를 return합니다.
  • 입출력 예 #2
    hp가 24이므로, 장군개미 네마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 6을 return합니다.
  • 입출력 예 #3
    hp가 999이므로, 장군개미 199 마리 병정개미 한마리 일개미 한마리로 사냥할 수 있습니다. 따라서 201을 return합니다.
hpresult
235
246
999201

나의 풀이

#include <string>
#include <vector>

using namespace std;

int solution(int hp) {
    int answer = 0;
    int general = hp/5;
    int soldier = (hp%5)/3;
    int worker = ((hp%5)%3)/1;
    answer = general + soldier + worker;
    return answer;
}

풀고나서..

  • 처음엔 for문으로 count를 세려고 했었다. 너무 복잡하게 생각한 것이 탈이었다. 아직은 문제를 빠르고 정확하게 이해할 정도로 유연성이 부족하다. 저번에도 나누기 연산문제를 헷갈려했는데 이번에도 비슷한 문제에서 비슷하게 헤맸다. 계속 문제를 풀면서 익히는 수밖에 없겠다.

C언어 풀이방법

  • 내가 처음 풀려고 했던 것과 비슷한 풀이가 있어서 가지고 왔다. c++로 for문 코드를 짰을때는 제대로 결과값이 나오지 않았었는데, 이 코드를 보니 내가 어떤 실수를 했을지도 모른다는 생각이 든다.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int hp) {
    int answer = 0;
    while(hp >= 5){
        hp -= 5;
        answer++;
    }
    while(hp >= 3){
        hp -= 3;
        answer++;
    }
    while(hp >= 1){
        hp -= 1;
        answer++;
    }
    return answer;
}
profile
_〆(。。)

1개의 댓글

comment-user-thumbnail
2024년 10월 16일

전 이런 문제를 볼 때 마다 장군개미 한마리를 데려가서 일개미 5마리의 힘을 내고 희생된다면 과연 그게 동일한 병력을 낸 더 효과적인 전투법이었을까요? 장군개미나 병정개미를 육성하는데에 그 개미의 재능, 주변의 노력이 더 필요했을테지만 일개미는 금방 대체가 가능한걸요 그렇다고 일개미의 목숨이 더 가볍다는 것은 아니지만.. 좀 더 철학적으로 접근해서 문제를 제출할 필요가 있지 않았을까 하는 생각은 듭니다. 단순히 숫자놀이로 접근하는 것이 아닌 이런 문제 일수록 더 구체적이고 완벽한 상황 설명을 제시해 준다면 개발자들이 조금 더 몰입해서 문제를 풀 수 있을텐데.. 너무 간단히 하나의 문제로만 생각해서 깊이있는 망상을 하지 못하게 하는 것이 조금은 아쉽다는 생각이 매번 듭니다. 연설 들어주셔서 감사합니다. o(^▽^)o

답글 달기