๋ฌธ์ (์ถ์ฒ: 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 |