๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-1

์ฝœ๋ผ ๋ฌธ์ œ - Java [์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต]

by ๊ทคํ”ผํ‚ค 2022. 12. 21.

 

โค๏ธ Problem

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

        ์ •๋‹ต์€ ์•„๋ฌด์—๊ฒŒ๋„ ๋งํ•˜์ง€ ๋งˆ์„ธ์š”.
        ์ฝœ๋ผ ๋นˆ ๋ณ‘ 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 ๋ฒ”์œ„๋ฅผ ๋„˜์ง€ ์•Š๊ฒŒ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no a b n result
1 2 1 20 19
2 3 1 20 9
  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)๋ณ‘์˜ ์ฝœ๋ผ๋ฅผ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

 

๐Ÿ’› Solution

ํ’€์ด

class Solution {
    public int solution(int a, int b, int n) {
        int total = n;
        int cnt = 0;
        int left = 0;

        while(total+left >= a) {
            int tmp = total;
            total = ((total+left)/a)*b;
            left = (tmp+left)%a;
            cnt += total;
        }
        return cnt;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ VERY GOOD๐Ÿ˜‹


 


 

๐Ÿ’œ Comment

์ด ๋ฌธ์ œ๋Š” ๊ตํ™˜ํ•˜๋Š” ์ฝœ๋ผ ๊ฐœ์ˆ˜๋ฅผ ๋ˆ„์ ์‹œํ‚ค๋ฉด ๋˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. while ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตํ™˜ํ•ด์„œ ๋ฐ›์€ ์ฝœ๋ผ๊ฐœ์ˆ˜(total)์™€ ๊ตํ™˜ํ•˜์ง€ ๋ชปํ•œ ๋‚˜๋จธ์ง€ ์ฝœ๋ผ๊ฐœ์ˆ˜(left)๋ฅผ ๋”ํ•œ ๊ฐ’์ด ๊ตํ™˜์˜ ๊ธฐ์ค€์ด ๋˜๋Š” ๊ฐœ์ˆ˜(a)๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋งŒ ๋ฐ˜๋ณต๋ฌธ์ด ์‹คํ–‰๋˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.

while๋ฌธ ์•ˆ์—์„œ๋Š” int tmp๋ฅผ ํ™œ์šฉํ•ด์„œ ๋งจ ์ฒ˜์Œ ์ฝœ๋ผ๊ฐœ์ˆ˜๋ฅผ ๋„ฃ์–ด๋‘๊ณ  total์—๋Š” ๊ตํ™˜ํ•ด์„œ ๋ฐ›์€ ์ฝœ๋ผ๊ฐœ์ˆ˜(total)+๋‚˜๋จธ์ง€ ์ฝœ๋ผ๊ฐœ์ˆ˜(left)๋ฅผ ๊ตํ™˜๊ธฐ์ค€๊ฐœ์ˆ˜(a)๋กœ ๋‚˜๋ˆ„๊ณ , ๊ตํ™˜ ์‹œ ๋ฐ›๋Š” ์ฝœ๋ผ๊ฐœ์ˆ˜(b)๋ฅผ ๊ณฑํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ตํ™˜ํ•ด์„œ ๋ฐ›๋Š” ์ฝœ๋ผ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

๊ทธ ๋‹ค์Œ, left์—๋Š” tmp๋กœ ๋„ฃ์–ด๋‘” ์ดˆ๊ธฐ total๊ฐ’๊ณผ ๋‚˜๋จธ์ง€(left)๋ฅผ ๋”ํ•ด์„œ ๊ตํ™˜๊ธฐ์ค€๊ฐœ์ˆ˜(a)๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋„ฃ์–ด์„œ ๊ตํ™˜ํ•˜์ง€ ๋ชปํ•œ ์ฝœ๋ผ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ–ˆ๋‹ค. tmp๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” total๊ฐ’์ด ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. cnt์—๋Š” ๊ตํ™˜ํ•œ ์ฝœ๋ผ๊ฐœ์ˆ˜(total)์„ ๋ˆ„์ ์‹œ์ผœ ์ด ๊ตํ™˜ํ•œ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์•˜๋‹ค.

 

 

 

8633์œ„โ˜บ

๋Œ“๊ธ€