Back-end/Algorithm

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ฝœ๋ผ ๋ฌธ์ œ (java)

Nellie Kim 2023. 8. 12. 23:57
728x90

๐Ÿ’‍โ™€๏ธ  ๋ฌธ์ œ ์„ค๋ช…

์˜ค๋ž˜์ „ ์œ ํ–‰ํ–ˆ๋˜ ์ฝœ๋ผ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝœ๋ผ ๋ฌธ์ œ์˜ ์ง€๋ฌธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ •๋‹ต์€ ์•„๋ฌด์—๊ฒŒ๋„ ๋งํ•˜์ง€ ๋งˆ์„ธ์š”.

์ฝœ๋ผ ๋นˆ ๋ณ‘ 2๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ์ฝœ๋ผ 1๋ณ‘์„ ์ฃผ๋Š” ๋งˆํŠธ๊ฐ€ ์žˆ๋‹ค. ๋นˆ ๋ณ‘ 20๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ๋ช‡ ๋ณ‘์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”๊ฐ€?

๋‹จ, ๋ณด์œ  ์ค‘์ธ ๋นˆ ๋ณ‘์ด 2๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด, ์ฝœ๋ผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.

๋ฌธ์ œ๋ฅผ ํ’€๋˜ ์ƒ๋นˆ์ด๋Š” ์ฝœ๋ผ ๋ฌธ์ œ์˜ ์™„๋ฒฝํ•œ ํ•ด๋‹ต์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๊ฐ€ ํ‘ผ ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์ฝœ๋ผ ๋นˆ ๋ณ‘ 20๋ณ‘์„ ๊ฐ€์ ธ๊ฐ€์„œ 10๋ณ‘์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐ›์€ 10๋ณ‘์„ ๋ชจ๋‘ ๋งˆ์‹  ๋’ค, ๊ฐ€์ ธ๊ฐ€์„œ 5๋ณ‘์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. 5๋ณ‘ ์ค‘ 4๋ณ‘์„ ๋ชจ๋‘ ๋งˆ์‹  ๋’ค ๊ฐ€์ ธ๊ฐ€์„œ 2๋ณ‘์„ ๋ฐ›๊ณ , ๋˜ 2๋ณ‘์„ ๋ชจ๋‘ ๋งˆ์‹  ๋’ค ๊ฐ€์ ธ๊ฐ€์„œ 1๋ณ‘์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐ›์€ 1๋ณ‘๊ณผ 5๋ณ‘์„ ๋ฐ›์•˜์„ ๋•Œ ๋‚จ์€ 1๋ณ‘์„ ๋ชจ๋‘ ๋งˆ์‹  ๋’ค ๊ฐ€์ ธ๊ฐ€๋ฉด 1๋ณ‘์„ ๋˜ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ƒ๋นˆ์ด๋Š” ์ด 10 + 5 + 2 + 1 + 1 = 19๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ์—ด์‹ฌํžˆ ํ’€๋˜ ์ƒ๋นˆ์ด๋Š” ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ๋ฅผ ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ๋นˆ ๋ณ‘ a๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ์ฝœ๋ผ b๋ณ‘์„ ์ฃผ๋Š” ๋งˆํŠธ๊ฐ€ ์žˆ์„ ๋•Œ, ๋นˆ ๋ณ‘ n๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค์ฃผ๋ฉด ๋ช‡ ๋ณ‘์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์ฝœ๋ผ ๋ฌธ์ œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ณด์œ  ์ค‘์ธ ๋นˆ ๋ณ‘์ด a๊ฐœ ๋ฏธ๋งŒ์ด๋ฉด, ์ถ”๊ฐ€์ ์œผ๋กœ ๋นˆ ๋ณ‘์„ ๋ฐ›์„ ์ˆœ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๋Š” ์—ด์‹ฌํžˆ ๊ณ ์‹ฌํ–ˆ์ง€๋งŒ, ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ์˜ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๋ฅผ ๋„์™€, ์ผ๋ฐ˜ํ™”๋œ ์ฝœ๋ผ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค์–ด ์ฃผ์„ธ์š”.

์ฝœ๋ผ๋ฅผ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋งˆํŠธ์— ์ฃผ์–ด์•ผ ํ•˜๋Š” ๋ณ‘ ์ˆ˜ a, ๋นˆ ๋ณ‘ a๊ฐœ๋ฅผ ๊ฐ€์ ธ๋‹ค ์ฃผ๋ฉด ๋งˆํŠธ๊ฐ€ ์ฃผ๋Š” ์ฝœ๋ผ ๋ณ‘ ์ˆ˜ b, ์ƒ๋นˆ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋นˆ ๋ณ‘์˜ ๊ฐœ์ˆ˜ n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์ƒ๋นˆ์ด๊ฐ€ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ฝœ๋ผ์˜ ๋ณ‘ ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.


โŒ ์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ b < a ≤ n ≤ 1,000,000
  • ์ •๋‹ต์€ ํ•ญ์ƒ int ๋ฒ”์œ„๋ฅผ ๋„˜์ง€ ์•Š๊ฒŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

 

๐Ÿ’ก  ์ž…์ถœ๋ ฅ ์˜ˆ

 

์ž…์ถœ๋ ฅ ์˜ˆ #1

  • ๋ฌธ์ œ์˜ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ #2

  • ๋นˆ ๋ณ‘ 20๊ฐœ ์ค‘ 18๊ฐœ๋ฅผ ๋งˆํŠธ์— ๊ฐ€์ ธ๊ฐ€์„œ, 6๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒ๋นˆ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝœ๋ผ ๋ณ‘์˜ ์ˆ˜๋Š” 8(20 – 18 + 6 = 8)๊ฐœ ์ž…๋‹ˆ๋‹ค.
  • ๋นˆ ๋ณ‘ 8๊ฐœ ์ค‘ 6๊ฐœ๋ฅผ ๋งˆํŠธ์— ๊ฐ€์ ธ๊ฐ€์„œ, 2๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒ๋นˆ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝœ๋ผ ๋ณ‘์˜ ์ˆ˜๋Š” 4(8 – 6 + 2 = 4)๊ฐœ ์ž…๋‹ˆ๋‹ค.
  • ๋นˆ ๋ณ‘ 4 ๊ฐœ์ค‘ 3๊ฐœ๋ฅผ ๋งˆํŠธ์— ๊ฐ€์ ธ๊ฐ€์„œ, 1๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒ๋นˆ์ด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ฝœ๋ผ ๋ณ‘์˜ ์ˆ˜๋Š” 2(4 – 3 + 1 = 2)๊ฐœ ์ž…๋‹ˆ๋‹ค.
  • 3๋ฒˆ์˜ ๊ตํ™˜ ๋™์•ˆ ์ƒ๋นˆ์ด๋Š” 9(6 + 2 + 1 = 9)๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

 

๐Ÿ‘ฉ ๋‚ด ํ’€์ด

public class Coke {
    public int solution(int a, int b, int n) {
        int count = 0;
		int num = n;

        while(num >= a) {
            count += num / a * b;
            num = num / a * b + num % a;
        }
		return count;
    }

    public static void main(String[] args) {
        Coke coke = new Coke();
        System.out.println(coke.solution(2, 1, 20));    // 19
        System.out.println(coke.solution(3, 1, 20));    // 9
    }
}