Exercise 00 : ft_iterative_factorial
- ๋ฌธ์
- ํ์ด
ํฉํ ๋ฆฌ์ ํจ์๋ฅผ ๋ฐ๋ณต ํจ์๋ก ๊ตฌํํ๊ธฐ
์ธ์๊ฐ ์ ํจํ์ง ์์ผ๋ฉด 0 ๋ฐํ = ์์์ผ๋๋ 0๋ฐํ
์ค๋ฒํ๋ก์ฐ๋ ์ฒ๋ฆฌํ๋ฉด ์๋จ.(ํ/์ ์ค์ญ ์ฃผ์)
cf) 0! = 1 - ์ฝ๋
int ft_iterative_factorial(int nb)
{
int factorial;
int index;
if (nb < 0)
return (0);
index = 1;
factorial = 1;
while (index < nb + 1)
factorial = factorial * index++;
return (factorial);
}
Exercise 01 : ft_recursive_factorial
- ๋ฌธ์
- ํ์ด
→ ํฉํ ๋ฆฌ์ผ ํจ์๋ฅผ ์ฌ๊ทํจ์๋ก ๊ตฌํํ๊ธฐ
์ธ์๊ฐ ์ ํจํ์ง ์์ผ๋ฉด 0 ๋ฐํ.
์ค๋ฒํ๋ก์ฐ๋ ์ฒ๋ฆฌํ์ง ๋ง๊ธฐ.
cf) 0! = 1 - ์ฝ๋
int ft_recursive_factorial_recursive(int factorial, int number)
{
factorial *= number--;
if (number > 0)
return (ft_recursive_factorial_recursive(factorial, number));
return (factorial);
}
int ft_recursive_factorial(int nb)
{
if (nb < 0)
return (0);
if (nb == 0)
return (1);
return (ft_recursive_factorial_recursive(1, nb));
}
Exercise 02 : ft_iterative_power
- ๋ฌธ์
- ํ์ด
→ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ฐํํ๋ ๋ฐ๋ณตํจ์ ์์ฑ
n์ด 0๋ณด๋ค ์์ผ๋ฉด 0 ๋ฐํ,
0^0 = 1 (๋ชจ๋ ์์ 0์ ๊ณฑ = 1)
์ค๋ฒํ๋ก์ฐ ์ฒ๋ฆฌํ์ง ๋ง๊ธฐ - ์ฝ๋
int ft_iterative_power(int nb, int power)
{
int result;
if (power < 0)
return (0);
result = 1;
while (power-- > 0)
result *= nb;
return (result);
}
Exercise 03 : ft_recursive_power
- ๋ฌธ์
- ํ์ด
→ ๊ฑฐ๋ญ์ ๊ณฑ ๋ฐํํ๋ ์ฌ๊ทํจ์ ์์ฑ.
n์ด 0๋ณด๋ค ์์ผ๋ฉด 0 ๋ฐํ,
0^0 = 1 (๋ชจ๋ ์์ 0์ ๊ณฑ = 1)
์ค๋ฒํ๋ก์ฐ ์ฒ๋ฆฌํ์ง ๋ง๊ธฐ - ์ฝ๋
int ft_recursive_power_recursive(int number, int power, int result)
{
if (power-- > 0)
return (ft_recursive_power_recursive(number, power, result *= number));
return (result);
}
int ft_recursive_power(int nb, int power)
{
if (power < 0)
return (0);
return (ft_recursive_power_recursive(nb, power, 1));
}
Exercise 04 : ft_fibonacci
- ๋ฌธ์
- ํ์ด
→ ํผ๋ณด๋์น ์์ด ์ฌ๊ทํจ์๋ก ์์ฑํ๊ธฐ.
์ธ๋ฑ์ค๊ฐ 0๋ณด๋ค ์์ผ๋ฉด -1๋ฐํํ๊ธฐ
index 0 = 0, index 1 = 1์ผ๋ก ์ ์ํ๊ธฐ.
ํผ๋ณด๋์น ์์ด : nํญ = n-1ํญ + n-2ํญ
์ค๋ฒํ๋ก์ฐ ์ฒ๋ฆฌํ์ง ๋ง๊ธฐ. - ์ฝ๋
int ft_fibonacci(int index)
{
if (index < 0)
return (-1);
if (index < 2)
return (index);
return (ft_fibonacci(index - 2) + ft_fibonacci(index - 1));
}
Exercise 05 : ft_sqrt
- ๋ฌธ์
- ํ์ด
→ ์ ๊ณฑ๊ทผ์ด ์กด์ฌํ๋ฉด ์ ๊ณฑ๊ทผ ๋ฐํ, ์ ๊ณฑ๊ทผ์ด ๋ฌด๋ฆฌ์๋ฉด(=์ ์๊ฐ ์๋๋ฉด) 0 ๋ฐํ. - ์ฝ๋
int ft_sqrt(int nb)
{
long long i;
if(nb <= 0)
return (0);
i=1;
while(i*i < (long long) nb)
++i;
if(i*i==(long long) nb)
return(i);
return (0);
}
cf) int ์ long long int ๋ ํธํ์ด ๋๋ค.
long long int = long long
i * i ์ผ๋ ์ค๋ฒํ๋ก์ฐ ๋ฐฉ์ง ์ํด์ ๋กฑ๋กฑ์
Exercise 06 : ft_is_prime
- ๋ฌธ์
- ํ์ด
→ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ์๊ฐ ์์๋ฉด 1๋ฐํ,
๊ทธ๋ ์ง ์์ผ๋ฉด 0 ๋ฐํ 0๊ณผ 1์ ์์๊ฐ ์๋. - ์ฝ๋
#include <unistd.h>
int ft_is_prime(int nb)
{
int i;
i = 2;
if (nb <= 1)
return (0);
while (i * i <= nb)
{
if (nb % i == 0)
return (0);
i++;
}
return (1);
}
Exercise 07 : ft_find_next_prime
- ๋ฌธ์
- ํ์ด
→ ์ธ์๋ก ์ฃผ์ด์ง ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ๋ค์ ์์๋ฅผ ๋ฐํํ๊ธฐ. - ์ฝ๋
int ft_is_prime(int nb)
{
int i;
i = 2;
if (nb <= 1)
return (0);
while (i * i <= nb)
{
if (nb % i == 0)
return (0);
i++;
}
return (1);
}
int ft_find_next_prime(int nb)
{
int i;
if (nb < 2)
nb = 2;
i = nb;
while (####๋ฒ์์ค์ #####) //i < 2 * nb
{
if (ft_is_prime(i))
return (i);
i++;
}
return (0);
}
int ft_recursive_factorial(int nb)
{
if (nb<0)
return (0);
if (nb == 0)
return (1);
if (nb == 1)
return (1);
return (nb * ft_recursive_factorial(nb-1));
}
Exercise 07 : The Ten Queens
#include <stdio.h>
#include <unistd.h>
void ft_putstr(char *str)
{
while (*str)
write(1, str++, 1);
}
void build(int grid[10][10])
{
int x;
int y;
y = 0;
while (y < 10)
{
x = 0;
while (x < 10)
{
grid[x][y] = 0;
x++;
}
y++;
}
}
void print(int grid[10][10])
{
int x;
int y;
y = 0;
while (y < 10)
{
x = 0;
while (x < 10)
{
printf("%d, ", grid[x][y]);
x++;
}
printf("\\n");
y++;
}
}
int find_in_y(int grid[10][10], int x)
{
int i;
i = 0;
while (i < 10)
{
if (grid[x][i])
{
return (i);
break ;
}
i++;
}
return (-1);
}
int possible(int grid[10][10], int x, int y)
{
int i;
int found;
i = 0;
while (i < 10)
{
found = find_in_y(grid, i);
int ytemp = x - i;
int xtemp = y - found;
if (xtemp < 0)
xtemp = -xtemp;
if (ytemp < 0)
ytemp = -ytemp;
if (y == found || ytemp == xtemp)
return (0);
i++;
}
return (1);
}
void solve(int grid[10][10], int x, int *solutions)
{
int i;
if (x < 10)
{
i = 0;
while (i < 10)
{
if (possible(grid, x, i))
{
grid[x][i] = 1;
solve(grid, x + 1, solutions);
grid[x][i] = 0;
}
i++;
}
}
else
(*solutions)++;
print(grid);
}
int ft_ten_queens_puzzle(void)
{
int grid[10][10];
int solutions;
solutions = 0;
build(grid);
solve(grid, 0, &solutions);
return (solutions);
}
int main(void)
{
printf("\\n%d\\n", ft_ten_queens_puzzle());
return (0);
}
์์ ๋์์ด ๋์ จ๊ธธ ๋ฐ๋ผ๋ฉฐ, ์ข์์๋ ๋๊ธ์ ํฐ ํ์ด ๋ฉ๋๋ค:)
'๐ ๋์ธํ๋ & ๊ฒฝํ > ๋์ธํ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ผํผ์ ๊ณต๋ถ ๊ธฐ๋ก] C06 (0) | 2022.05.30 |
---|---|
[๋ผํผ์ ๊ณต๋ถ ์ผ์ง] C04 (0) | 2022.05.28 |
[๋ผํผ์ ๊ณต๋ถ ์ผ์ง] C03 (0) | 2022.05.28 |
[๋ผํผ์ ๊ณต๋ถ ์ผ์ง] C02 (0) | 2022.05.28 |
[๋ผํผ์ ๊ณต๋ถ ์ผ์ง] C01 (0) | 2022.05.28 |