๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ’€์ด(Java)

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค_์ฝœ๋ผ ๋ฌธ์ œ

by carrot0911 2024. 12. 11.

๋ฌธ์ œ ์„ค๋ช…

https://school.programmers.co.kr/learn/courses/30/lessons/132267

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

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

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

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

์ž…์ถœ๋ ฅ ์˜ˆ

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

 

๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ

class Solution {
    public int solution(int a, int b, int n) {
        int answer = 0;
        
        while(true) {
        
            if (n < a) {
                break;
            }
            
            answer += (n / a) * b;
            
            n = ((n / a * b) + (n % a));
        }
        
        return answer;
    }
}

์ฝ”๋“œ ์„ค๋ช…

  • int answer = 0 : ์ตœ์ข…์ ์œผ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ฝœ๋ผ์˜ ์ˆ˜๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜ answer๋ฅผ 0์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.
  • while (true) { } : ๋ฌดํ•œ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ, ์กฐ๊ฑด์— ๋”ฐ๋ผ break๋ฅผ ํ†ตํ•ด ์ข…๋ฃŒ๋œ๋‹ค.
    • if (n < a) { break } : if๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ n์ด a๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ while ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.
    • answer += (n / a) * b : ํ˜„์žฌ ๋นˆ ๋ณ‘์˜ ์ˆ˜๋ฅผ a๋กœ ๋‚˜๋ˆ„๊ณ  b๋ฅผ ๊ณฑํ•œ ๊ฐ’์ธ ๊ตํ™˜ ๊ฐ€๋Šฅํ•œ ํšŸ์ˆ˜์— ๋”ฐ๋ผ ์ƒˆ๋กœ ๋ฐ›๊ฒŒ ๋  ์ฝœ๋ผ์˜ ์ˆ˜๋ฅผ answer ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค.
    • n = ((n / a * b) + (n % a)) : ๊ตํ™˜ํ•˜๊ณ  ์ƒˆ๋กœ ๋ฐ›์€ ์ฝœ๋ผ์˜ ์ˆ˜(n / a * b)์™€ ๊ตํ™˜ ํ›„ ๋‚จ์€ ๋นˆ ๋ณ‘ ์ˆ˜(n % a)์˜ ๊ฐ’์„ ๋”ํ•˜๊ณ  n์— ์ €์žฅํ•˜๋ฉด์„œ n์˜ ๊ฐ’์„ ๊ฐฑ์‹ ํ•œ๋‹ค.