문제(출처: https://www.acmicpc.net/problem/1980)
< 햄버거 사랑 >
문제 풀이
타워버거와 불고기버거 중에서 먹는 시간이 적게 걸리는 것을 기준으로 t분 안에 가장 많이 먹을 수 있는 경우를 구한다.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class _1980_ { // 햄버거 사랑
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int t = Integer.parseInt(st.nextToken());
if (n > m) {
int temp = n;
n = m;
m = temp;
}
int max = 0, time = t, idx=0;
while (t / n >= idx) {
int temp = (t - (n * idx)) / m;
if (t - (n * idx) - (m * temp) < time) {
max = temp + idx;
time = t - (n * idx) - (m * temp);
} else if (t - (n * idx) - (m * temp) == time) {
max = Math.max(max, temp + idx);
}
idx += 1;
}
System.out.println(max + " " + time);
}
}
변수)
n, m, t : 타워버거, 불고기버거 먹는 데 걸리는 시간, 주어진 시간
max, time, idx : 먹은 햄버거 개수, 콜라를 마신 시간, (타워버거, 불고기버거 중 시간이 적게 걸리는 것을 기준으로 한 햄버거 먹은 개수)
타워버거, 불고기버거를 먹는 데 걸리는 시간과 주어진 시간을 입력받는다. 타워버거와 불고기버거 중에서 시간이 적게 걸리는 것을 n으로 저장하고, 시간이 더 걸리는 것을 m으로 저장한다.
t시간 안에 먹을 수 있는 n 햄버거의 개수를 idx, m 햄버거의 개수를 temp에 저장한다. 각 햄버거를 먹고 콜라를 마시는 시간이 time보다 작다면 값을 업데이트한다. 만약 time과 같다면 햄버거 개수가 많은 값으로 업데이트한다. idx값을 0부터 늘려가며 t/n 이하일 때 계속해서 반복한다.
최종 햄버거의 개수와 콜라를 마신 시간을 출력한다.

'🌞Algorithm > 🔥Baekjoon' 카테고리의 다른 글
| [Baekjoon] 5637_가장 긴 단어 (0) | 2024.07.10 |
|---|---|
| [Baekjoon] 30803_수도꼭지 (0) | 2024.07.09 |
| [Baekjoon] 4821_페이지 세기 (1) | 2024.07.05 |
| [Baekjoon] 1996_지뢰 찾기 (0) | 2024.07.04 |
| [Baekjoon] 5766_할아버지는 유명해! (1) | 2024.07.03 |