โค๏ธ 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 |
- ๋ณธ๋ฌธ์์ ์ค๋ช ํ ์์์ ๋๋ค.
- ๋น ๋ณ 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)์ ๋์ ์์ผ ์ด ๊ตํํ ๊ฐ์๋ฅผ ์ฐพ์๋ค.
'Programmers lv-1' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ณผ์ผ ์ฅ์ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (2) | 2022.12.24 |
---|---|
๊ฐ์ฅ ๊ฐ๊น์ด ๊ฐ์ ๊ธ์ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.23 |
์์ฃผํ์ง ๋ชปํ ์ ์ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.23 |
๋ชจ์๊ณ ์ฌ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.19 |
ํฐ์ผ๋ชฌ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.18 |
2016๋ - Java [์ฝ๋ฉํ ์คํธ ์ฐ์ต] (0) | 2022.12.17 |
๋๊ธ