์ ์ ์ ๊ณฑ๊ทผ ํ๋ณ
์์์ ์์ ์ ์ n์ ๋ํด, n์ด ์ด๋ค ์์ ์ ์ x์ ์ ๊ณฑ์ธ์ง ์๋์ง ํ๋จํ๋ ค ํฉ๋๋ค. n์ด ์์ ์ ์ x์ ์ ๊ณฑ์ด๋ผ๋ฉด x+1์ ์ ๊ณฑ์ ๋ฆฌํดํ๊ณ , n์ด ์์ ์ ์ x์ ์ ๊ณฑ์ด ์๋๋ผ๋ฉด -1์ ๋ฆฌํดํ๋ ํจ์๋ฅผ ์์ฑํ์ธ์.
์ ํ ์กฐ๊ฑด
- n์ 1์ด์, 50000000000000 ์ดํ์ธ ์์ ์ ์์ ๋๋ค.
์ ์ถ๋ ฅ ์
์
์ถ๋ ฅ ์#1
121์ ์์ ์ ์ 11์ ์ ๊ณฑ์ด๋ฏ๋ก, (11+1)๋ฅผ ์ ๊ณฑํ 144๋ฅผ ๋ฆฌํดํฉ๋๋ค.
์
์ถ๋ ฅ ์#2
3์ ์์ ์ ์์ ์ ๊ณฑ์ด ์๋๋ฏ๋ก, -1์ ๋ฆฌํดํฉ๋๋ค.
n | return |
---|---|
121 | 144 |
3 | -1 |
๋ฌธ์ ํ์ด
for๋ฌธ์ ํตํด i๋ฅผ ๊ณ์ ์ฆ๊ฐ์ํค๋๋ฐ ๊ทธ ์กฐ๊ฑด์ for๋ฌธ ๊ดํธ ์์ ์ฃผ๋ ๋ฐฉ์์ด ์๋ for๋ฌธ ์์ if๋ฌธ์ ์ฐ๋ ๋ฐฉ์์ผ๋ก ์กฐ๊ฑด์ ์ ์ํ๋๋ก ํ๋ค. i*i๊ฐ n๋ณด๋ค ํด ๋์๋ -1์ ์ถ๋ ฅ์ํจ๋ค. ์ด๋ ์์ ์ ์์ ์ ๊ณฑ์ด ์๋ ๊ฒฝ์ฐ -1์ ์ถ๋ ฅํ๋ผ๋ ์๋ฏธ์ด๋ค. ์ฆ, n์ด 3์ผ ๊ฒฝ์ฐ -1์ด ์ ์์ ์ผ๋ก ๋ฆฌํด๋๋ค.
๋ฐ๋ฉด, n๊ณผ i*i๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ (i+1)*(i+1)์ ์ถ๋ ฅ์ํจ๋ค. n์ด 121์ผ ๊ฒฝ์ฐ, n๊ณผ i*i๊ฐ ๊ฐ์์ง๊ฒ ๋ ๊ฒ์ด๊ณ ๊ฐ์์ง๊ฒ ๋ ๋์ i ๊ฐ์ 11(121์ด ์์ ์ ์ 11์ ์ ๊ณฑ์ด๊ธฐ ๋๋ฌธ์)์ด๋ค. ์ต์ข
์ ์ผ๋ก (11+1)*(11+1)==144๊ฐ ์ ์์ ์ผ๋ก ๋ฆฌํด๋๋ค.
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
long long solution(long long n) {
for(long long i=1 ; ; i++)
{
if(i*i > n)
return -1;
else
{
if(n == (i*i))
return (i+1)*(i+1);
}
}
}
๋ค๋ฅธ ํ์ด ๋ฐฉ์
์ถ์ฒ : ํ๋ก๊ทธ๋๋จธ์ค ์ค์ฟจ
for๋ฌธ์ ํตํด i*1์ ๊ฐ์ด n๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ๋๊น์ง i๋ฅผ ์ฆ๊ฐ์์ผ์ค๋ค.
๋ง์ผ i*i๊ฐ n๊ณผ ๊ฐ์ ๋, ์ฆ ์์ ์ ์์ ์ ๊ณฑ์ผ ๊ฒฝ์ฐ์๋ return (i+1)*(i+1);์ ํตํด n์ด 121์ผ ๊ฒฝ์ฐ 144๋ฅผ ์ถ๋ ฅ์์ผ์ค ์ ์์ผ๋ฉฐ, ์์ ์ ์์ ์ ๊ณฑ์ด ์๋ ๊ฒฝ์ฐ๋ -1์ ์ถ๋ ฅ์์ผ์ฃผ๋๋ก ํ๋ค. ์์ ๋ฌธ์ ํ์ด๋ณด๋ค ๋ ๊ฐ๋จํ ํ์ด ๋ฐฉ์์ด๋ค์~ ใ
ใ
long long solution(long long n) {
for(long long i=1; i*i<=n; i++)
{
if(i*i == n)
return (i+1)*(i+1);
}
return -1;
}
๋๊ธ