자료구조 & 알고리즘/코딩테스트
[JS 코딩테스트] 코테 입문 수학 "개미 군단" 풀기
칠구의 스터디
2024. 3. 7. 12:36
문제 출처: 코딩테스트 입문 | 프로그래머스 스쿨 (programmers.co.kr)
[문제 설명]
개미 군단이 사냥을 나가려고 합니다. 개미군단은 사냥감의 체력에 딱 맞는 병력을 데리고 나가려고 합니다. 장군개미는 5의 공격력을, 병정개미는 3의 공격력을 일개미는 1의 공격력을 가지고 있습니다. 예를 들어 체력 23의 여치를 사냥하려고 할 때, 일개미 23마리를 데리고 가도 되지만, 장군개미 네 마리와 병정개미 한 마리를 데리고 간다면 더 적은 병력으로 사냥할 수 있습니다. 사냥감의 체력 hp가 매개변수로 주어질 때, 사냥감의 체력에 딱 맞게 최소한의 병력을 구성하려면 몇 마리의 개미가 필요한지를 return하도록 solution 함수를 완성해주세요.
[제한사항]
hp는 자연수입니다.0 ≤ hp ≤ 1000
[입출력 예]
hp result
23 5
24 6
999 201
이 문제는 가장 공격력이 높은 장군개미 5부터 3 , 1로 hp를 나눠서 문제를 풀어야겠다고 생각했다.
그래서 필요한 것 -> 개미들의 공격력 , 필요한 개미의 수 , 남은 체력
function solution(hp) {
//개미들의 공격력
const Apower = 5;
const Bpower =3;
const Cpower =1;
//필요한 장군개미의 수
let Aant = Math.floor(hp/Apower);
//남은 체력
let remaininghp = hp % Apower;
//필요한 병정개미의 수
let Bant = Math.floor(remaininghp/Bpower);
//남은 체력
remaininghp %= Bpower
//필요한 일개미의 수
let Cant = remaininghp;
return Aant+Bant+Cant ;
}
나의 정답이다.
주석을 보면 알겠지만 필요한 개미의 수 구하기 -> 남은 체력 -> 다음 개미 이런 순으로 정답을 구하였다.
그런데...
function solution(hp) {
return Math.floor(hp/5)+Math.floor((hp%5)/3)+(hp%5)%3;
}
다른 분의 풀이를 보니 이렇게 한줄로 개미의 수 구하기 -> 남은 체력 -> 다음 개미를 구할 수 있었다...
'%'와 '/'를 헷갈리지 않고 잘써야 하긴 하지만 이렇게 쉬운 방법이 있었다니 🥲🥲
나는 아직 멀었고 더 열심히 해야겠다는 생각이 드는 문제였다 ㅠ.ㅠ