โฐ๋ฌธ์
iํฉํ ๋ฆฌ์ผ (i!)์ 1๋ถํฐ i๊น์ง ์ ์์ ๊ณฑ์ ์๋ฏธํฉ๋๋ค. ์๋ฅผ๋ค์ด 5! = 5 * 4 * 3 * 2 * 1 = 120 ์ ๋๋ค. ์ ์ n์ด ์ฃผ์ด์ง ๋ ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฐ์ฅ ํฐ ์ ์ i๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
→ i! ≤ n
์ ํ์ฌํญ
- 0 < n ≤ 3,628,800
์ ์ถ๋ ฅ ์
n | result |
3628800 | 10 |
7 | 3 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- 10! = 3,628,800์ ๋๋ค. n์ด 3628800์ด๋ฏ๋ก ์ต๋ ํฉํ ๋ฆฌ์ผ์ธ 10์ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- 3! = 6, 4! = 24์ ๋๋ค. n์ด 7์ด๋ฏ๋ก, 7 ์ดํ์ ์ต๋ ํฉํ ๋ฆฌ์ผ์ธ 3์ return ํฉ๋๋ค.
๐กํ์ด
โญfor๋ฌธ์ ์ฌ์ฉํ ์ฝ๋
class Solution {
public int solution(int n) {
int answer = 0;
int factorial = 1;
//n์ ๋ฒ์๊ฐ์ด ์ ํด์ ธ ์์ผ๋ฏ๋ก ์ต๋ ํฉํ ๋ฆฌ์ผ์ 10
for(int i=1; i<=10; i++){
factorial *= i;
if(factorial == n){
answer = i;
break;
}else if(n < factorial){
answer = (i-1);
break;
}
}
return answer;
}
}
n์ ๋ฒ์ ๊ฐ์ 0 < n < 3,628,800์ผ๋ก ์ ํด์ ธ์๊ณ , ์ ์ถ๋ ฅ ์๋ฅผ ํตํด ์ต๋ result ๊ฐ์ 10์์ ์ ์ ์๋ค.
์ด๋ฅผ ํตํด for๋ฌธ์ 1~10๊น์ง ๋ฐ๋ณตํ๋๋ฐ, 3๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋์ด ์กฐ๊ฑด๋ฌธ์ ํตํด answer๊ฐ์ ์ ์ฅํด์ฃผ์๋ค.
1) 1~i๊น์ง ๊ณฑํ ๊ฐ(=factorial)์ด n๊ณผ ๊ฐ์ ๊ฒฝ์ฐ
2) 1~i๊น์ง ๊ณฑํ ๊ฐ(=factorial)์ด n๋ณด๋ค ํด ๊ฒฝ์ฐ
3) ๊ทธ ์ธ์ ๊ฒฝ์ฐ( i๊ฐ 10์ธ ๊ฒฝ์ฐ)
** 1, 2 ์กฐ๊ฑด๋ฌธ ์์๋ break;๋ฅผ ์ฌ์ฉํด ๋์ด์ ๋ฐ๋ณต๋์ง ์๋๋ก ํด์ฃผ์ด์ผ ํ๋ค.
โญwhile๋ฌธ์ ์ฌ์ฉํ ์ฝ๋
class Solution {
public int solution(int n) {
int answer = 0;
int factorial = 1;
int index = 1;
while(factorial < n){
factorial *= index;
if(factorial < n){
index++;
}else if(factorial == n){
answer = index;
}else if(n < factorial){
answer = (index-1);
}
}
return answer;
}
}
'๐ Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] 2์ฐจ์์ผ๋ก ๋ง๋ค๊ธฐ(์๋ฐ) (0) | 2023.03.31 |
---|---|
[Programmers] ๋ชจ์ ์ ๊ฑฐ(์๋ฐ) (0) | 2023.03.30 |
[Programmers] ํผ๋ณด๋์น ์(์๋ฐ) (0) | 2023.03.28 |
[Programmers] ๋ชจ์ค๋ถํธ(1)(์๋ฐ) (0) | 2023.03.27 |
[Programmers] ๋ฐ๋ณต๋ฌธ ์ถ๋ ฅํ๊ธฐ(์๋ฐ) (0) | 2023.03.25 |