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)

๐Ÿ’ก ๋‹ค๋ฅธ ํ’€์ด

๐Ÿ’ก ๋А๋‚€์  ๋ฐ ๊ธฐ์–ตํ•  ์ •๋ณด

  • ๊ณผ๋„ํ•œ ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ์— ์ฃผ์˜ํ•˜์ž. ์ƒ๊ฐ๋‚˜๋Š”๋Œ€๋กœ ์ฝ”๋”ฉํ•˜๋‹ค๋ณด๋‹ˆ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์ด ๋‚˜์˜ ์•ˆ์ข‹์€ ์Šต๊ด€์ธ ๋“ฏ ํ•˜๋‹ค ใ…œใ…œ ์ตœ๋Œ€ํ•œ ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ์‹คํŒจํ•  ํ™•๋ฅ ์ด ์ค„์–ด๋“ ๋‹ค.