🌞Algorithm/🔥Baekjoon

[Baekjoon] 1980_햄버거 사랑

뿌야._. 2024. 7. 8. 14:36
문제(출처: 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