- 문제설명
- 해결과정
문제의 조건에서 두 아이템의 이름이 A, B일때 B가 회복시켜주는 양이 A보다 더 크다고 나와있다.
이를 이용해 문제를 풀어보자.
아이템 사용량이 가장 최소가 되는 상황부터 아이템 사용량이 가장 최대가 되는 상황으로 올라가면서 각 단계별로 피로도를 0으로 만들 수 있는지 판단하면 된다.
--> 가장 먼저 피로도를 0으로 만들 수 있는 상황을 만난다면 해당 경우가 아이템을 가장 적게 사용해 피로도를 0으로 만드는 것이다.
아이템 사용량이 가장 최소가 되는 상황이란 누적 피로도를 아이템 B의 회복량으로 나눈 몫만큼 아이템 B를 사용하고 그 나머지는 아이템 A로 피로를 회복하는 상황이다.
이 상황부터 아이템 B의 사용량을 하나 줄이고, 다시 나머지를 아이템 A로 채워 피로도를 0으로 만들 수 있는지 확인하고 또 반복한다.
마지막까지가서 아이템 B는 사용하지도 않고 누적 피로도를 전부 아이템 A로 채울 수 없다면 -1을 출력하면 된다.
- 솔루션
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringTokenizer st = new StringTokenizer(br.readLine());
int itemA = Integer.parseInt(st.nextToken());
int itemB = Integer.parseInt(st.nextToken());
int maxOfItemB = N / itemB;
int result = -1;
while(maxOfItemB >= 0) {
int remain = N - maxOfItemB * itemB;
if(remain % itemA == 0) {
result = maxOfItemB + remain / itemA;
break;
}
maxOfItemB--;
}
bw.write(Integer.toString(result));
bw.flush();
bw.close();
}
}
'코딩테스트 > 구름톤 챌린지' 카테고리의 다른 글
[Java] 구름톤 챌린지 3주차 : 발전기 (2) (0) | 2023.08.31 |
---|---|
[Java] 구름톤 챌린지 3주차 : 발전기 (0) | 2023.08.31 |
[Java] 구름톤 챌린지 2주차 : GameJam (0) | 2023.08.28 |
[Java] 구름톤 챌린지 2주차 : 폭탄 구현하기 (2) (0) | 2023.08.24 |
[Java] 구름톤 챌린지 2주차 : 통증 (0) | 2023.08.24 |