- 입문 - 개미 군단2023년 10월 30일 21시 02분 26초에 업로드 된 글입니다.작성자: oneseel
입문 - 개미 군단
문제설명
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 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합니다.
내 풀이
>> 조건문을 이용해서 hp를 ant1로 나눈 나머지가 0이 되면 answer는 hp를 ant1로 나눈 몫이 된다.
>> 0이 되지 않으면, hp를 ant1로 나눈 나머지를 ant2로 나눈 나머지가 0이 되면 answer는 hp를 ant1로 나눈 몫에 hp를 ant1로 나눈 나머지를 ant2로 나눈 몫을 더한 값이 된다.
>> 위의 조건을 만족하지 못하면 위의 값을 ant2와 hp를 ant1로 나눈 나머지를 ant2로 나눈 나머지와 더한 값으로 나눠준다.
>> 말로만 해도 엄청 복잡하고, 풀이과정도 보기에 복잡한 것 같다.
class Solution { public int solution(int hp) { int answer = 0; int ant1 = 5; int ant2 = 3; int ant3 = 1; if (hp % ant1 == 0) { answer = hp / ant1; } else if ((hp % ant1) % ant2 == 0) { answer = (hp / ant1) + (hp % ant1) / ant2; } else { answer = (hp / ant1) + (hp % ant1) / ant2 + (hp % ant1) % ant2; } return answer; } }
개선된 풀이
>> answer에 hp를 ant1로 나눈 몫을 넣어주고, hp는 ant1로 나눈 나머지값을 넣어준다.
>> 두번째 answer에는 hp를 ant2를 나눈 몫을 더해주고, hp는 ant2로 나눈 나머지값을 다시 넣어준다.
>> 세번째 answer에도 hp를 ant3을 나눈 몫을 더해준다.
>> 만약 hp가 24라면?
>> 먼저 24를 5로 나누면 4의 몫과 4의 나머지가 나온다. answer에 몫 4를 넣어주고, hp에 나머지 4를 넣어준다.
>> 4를 3으로 나누면 1의 몫과 1의 나머지가 나온다. answer에 몫 1를 더해주고, hp에 나머지 1을 넣어준다.
>> 1을 1로 나누면 1의 몫만 생기고, answer에 몫 1을 더해주면, answer는 6이된다(ant1 4, ant2 1, ant3 1)
class Solution { public int solution(int hp) { int answer = 0; int ant1 = 5; int ant2 = 3; int ant3 = 1; answer = hp / ant1; hp %= ant1; answer += hp / ant2; hp %= ant2; answer += hp / ant3; return answer; } }
https://school.programmers.co.kr/learn/courses/30/lessons/120837
'코딩테스트' 카테고리의 다른 글
입문 - 가위 바위 보 (1) 2023.10.30 입문 - 모스부호(1) (1) 2023.10.30 입문 - 순서쌍의 개수 (0) 2023.10.30 입문 - 진료 순서 정하기 (0) 2023.10.30 입문 - 외계행성의 나이 (1) 2023.10.29 댓글