public int solution(int hp) {
int answer = 0; // 개미들의 공격 횟수
while (hp != 0) { // hp가 남아있을 때
if (hp - 5 >= 0) { // 장군 개미의 공격
hp -= 5;
answer += 1;
} else if (hp - 3 >= 0) { // 병정 개미의 공격
hp -= 3;
answer += 1;
} else { // 일 개미의 공격
hp -= 1;
answer += 1;
}
}
return answer;
}
// return hp / 5 + (hp % 5 / 3) + hp % 5 % 3; 맘에 드는 코드
가장 적은 공격으로 hp를 0으로 만들어야한다.
처음에 if (hp % 5 > 5) 로 했었다. 그러면 문제가 hp가 6~9인 상황에서 한번 더 공격할 수 있음에도 다음 개미에게 공격을 양보하게 되어 최소 공격 횟수가 도출되지 않았다.
public int solution(int n, int k) {
int service = 0; // 음료수 서비스 받은 횟수
int a = n; // 주문한 양꼬치 개수
while ( a - 10 >= 0) { // 양꼬치 주문 10번당 음료 서비스 1번
a -= 10;
service += 1;
}
int lamb = n * 12000; // 총 양꼬치 가격
int drink = (k - service) * 2000; // 총 음료수 가격
return lamb + drink; // 총 가격
}
// return n * 12000 + k * 2000 - (n / 10 * 2000); 맘에 드는 코드
양꼬치와 음료수를 주문하는데 양꼬치 주문 10번 당 음료수 1개를 서비스로 준다. 이때 총 가격을 구하는 문제.
맘에 드는 코드들을 보면 문제의 본질적인 부분을 잘 파악하여 짧고 간결하게 해결했다. 코드를 구현함에 있어 문제의 본질을 좀 더 확실히 고민한 후에 코딩을 해야겠다고 생각했다.
다시 생각해보니 저 사람들이 그냥 수학을 잘하는거 아닌가?
[TIL#18] Study] 코딩 테스트 6 (0) | 2023.11.09 |
---|---|
[TIL#17] Study] 코딩 테스트 5 (0) | 2023.11.08 |
[TIL#16] Study] 코딩 테스트 4 (1) | 2023.11.04 |
[TIL#14-1] Study] 코딩 테스트 2 (0) | 2023.11.02 |
[TIL#13] Study] 코딩 테스트 1 (0) | 2023.11.01 |