Q 16283 Farm
๐ก ๋ฌธ์ ์์ฝ ๋ฐ ๋ถ์
ํ๋ฃจ์ ์ ํ ๋ง๋ฆฌ๊ฐ ๋จน๋ ์ฌ๋ฃ a, ์ผ์ ํ ๋ง๋ฆฌ๊ฐ ๋จน๋ ์ฌ๋ฃ b, ์ ์ฒด n ๋ง๋ฆฌ, ์๋นํ ์ ์ฒด ์ฌ๋ฃ w ๊ทธ๋จ์ด ์ฃผ์ด์ง๋ฉด ์๊ณผ ์ผ์๊ฐ ๋ช ๋ง๋ฆฌ์ธ์ง ๊ตฌํ๋ ๋ฌธ์ . ๋จ์ํ ์ํ ๋ฌธ์ ์ธ ๊ฒ์ผ๋ก ๋ณด์ธ๋ค.
๐ก ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
์๊ฐํด๋ธ ๋ฐฉ๋ฒ์ ๋ฌด์ํ๊ฒ ๋ํด๋ณด๋ ๋ฐฉ๋ฒ์ด๋ค. a ์ b ๋ฅผ n ๋ฒ ๋ํ ๊ฐ์ด w ์ด๊ณ a, b ๋ฅผ ๋ช ๋ฒ ๋ํ๋๋๊ฐ ๋ฌธ์ ์ ๋ต์ด ๋ ๊ฒ์ด๋ค.
์๋ฅผ ๋ค์ด n = 9 ์ธ ๊ฒฝ์ฐ,
(a * 9) + (b * 0);
(a * 8) + (b * 1);
(a * 7) + (b * 2);
...
๐ก ์ฝ๋
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int n = sc.nextInt();
int w = sc.nextInt();
int sheep = 0;
int goat = 0;
// a,b ๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ๋จผ์ ์ฒดํฌํ๋ค.
if (a == b) {
// a,b ๊ฐ์ด ๊ฐ์ผ๋ฉด์ ์ ์ฒด ๋ง๋ฆฌ ์๊ฐ 3๋ง๋ฆฌ ์ด์์ด๋ฉด ๊ฐ๋ฅํ ํด๊ฐ ๋ ๊ฐ ์ด์์ด๋ฏ๋ก -1 ์ ์ถ๋ ฅํ๋ค.
if (n == 2) {
System.out.println(1 + " " + 1);
} else {
System.out.println(-1);
}
} else if (a != b) {
int count = 0; // ๊ฐ๋ฅํ ํด๊ฐ ๋ช ๊ฐ ์๋์ง ์ฒดํฌํ๋ ๋ณ์
for (int i = 0; i <= n; i++) {
if (a * (n-i) + b * i == w) {
sheep = n - i;
goat = i;
count++;
}
}
// ๊ฐ๋ฅํ ํด๊ฐ 2๊ฐ ์ด์์ด๋ฉด -1 ์ ์ถ๋ ฅํ๋ค.
if (count > 1) {
System.out.println(-1);
}
// ์ ํน์ ์ผ์๊ฐ 0๋ง๋ฆฌ์ธ ๊ฒฝ์ฐ๋ -1 ์ ์ถ๋ ฅํ๋ค.
if (sheep == 0 || goat == 0) {
System.out.println(-1);
} else {
System.out.println(sheep + " " + goat);
}
}
}
}
๐ก ํ๋ฆฐ ๋ถ๋ถ ์์
์ ๊ทผ์ ์ข์์ผ๋ ๊ณผ๋ํ ์กฐ๊ฑด๋ฌธ ์ฌ์ฉ์ด ์คํจ์ ์์ธ์ด ๋์๋ค. for ๋ฌธ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ฒดํฌํ๋ฏ๋ก a,b ๊ฐ ๋์ผํ์ง ์ฌ๋ถ๋ ์ฒดํฌํ ํ์๊ฐ ์์๋ค. ๋ํ ๊ธฐ์กด์๋ ์ ๋ต์ด ์๋ ๊ฒฝ์ฐ์ ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด์ -1 ์ ์ถ๋ ฅํ๋๋ก ๋ง๋ค์๋๋ฐ, ์๊ฐ๋ณด๋ค ์ค๋ต ์กฐ๊ฑด์ด ๋ง์๊ณ ์ด ๋ถ๋ถ์์ ๋์น๋ ๋ถ๋ถ์ด ๋ฐ์ํ์ฌ ์์์น ๋ชปํ๊ฒ ์ถ๋ ฅ์ด ๋ ๋ฒ ์ด๋ฃจ์ด์ง๋ ๋ฑ ๋ฌธ์ ๊ฐ ์์๋ ๋ฏ ํ๋ค. ์กฐ๊ธ ๋ ๋จ์ํ๊ฒ ์ ๋ต์ธ ์กฐ๊ฑด๋ง ์กฐ๊ฑด๋ฌธ์ ๊ฑธ์ด ์ถ๋ ฅํ๊ฒ ๋ฐ๊ฟ์ ์ ๋ต ์ฝ๋๋ฅผ ์์ฑํ๋ค.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int n = sc.nextInt();
int w = sc.nextInt();
int sheep = 0;
int goat = 0;
int count = 0; // ๊ฐ๋ฅํ ํด๊ฐ ๋ช ๊ฐ ์๋์ง ์ฒดํฌํ๋ ๋ณ์
for (int i = 1; i < n; i++) {
if (a * (n-i) + b * i == w) {
sheep = n - i;
goat = i;
count++;
}
}
if (count == 1) {
System.out.println(sheep + " " + goat);
} else {
System.out.println(-1);
}
}
}
๐ก ์๊ฐ ๋ณต์ก๋, ๊ณต๊ฐ ๋ณต์ก๋
์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
---|---|
O(n) | O(1) |
๐ก ๋ค๋ฅธ ํ์ด
๐ก ๋๋์ ๋ฐ ๊ธฐ์ตํ ์ ๋ณด
- ๊ณผ๋ํ ๋ฐ๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์ ์ฃผ์ํ์. ์๊ฐ๋๋๋๋ก ์ฝ๋ฉํ๋ค๋ณด๋ ๋ณต์กํด์ง๋ ๊ฒ์ด ๋์ ์์ข์ ์ต๊ด์ธ ๋ฏ ํ๋ค ใ ใ ์ต๋ํ ๋จ์ํ๊ฒ ์์ฑํด์ผ ์คํจํ ํ๋ฅ ์ด ์ค์ด๋ ๋ค.