//

//  main.cpp

//  ExampleCpp

//

//  Created by 김일호 on 2015. 7. 10..

//  Copyright (c) 2015 김일호. All rights reserved.

//


#include <iostream>

#include <string>

using namespace std;


void selection(int *arr);

void swap(int *num1, int *num2);


int main()

{

    int arr[5] = {4,3,9,1,2};

    selection(arr);

}


void selection(int arr[])

{

    int i, j;

    int min;

    for(i = 0; i<5-1; i++)

    {

        min = i;

        for(j = i+1; j < 5; j++)

        {

            if(arr[j] < arr[min])

                min = j;

        }

        swap(&arr[i], &arr[min]);

        

        cout <<i+1 <<"회전: ";

        for(int k = 0; k< 5; k++)

            cout << arr[k] << " " ;

        cout << endl;

    }

}



void swap(int *num1, int *num2)

{

    int temp;

    temp = *num1;

    *num1 = *num2;

    *num2 = temp;

}

'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by thread1525

댓글을 달아 주세요

//

//  main.c

//  project euler

//

//  Created by 김일호 on 2015. 4. 25..

//  Copyright (c) 2015년 김일호. All rights reserved.

//


#include <stdio.h>

#include <math.h>


int main(int argc, const char * argv[]) {

    long unsigned int total = 2;

    int prime;

    int n= 0;

    for(prime = 3; prime<2000000; prime++)

    {

        n = (int)sqrt((double)prime);

        

        if(prime % 2 != 0)

        {

            int flag = 0;

            for(int i = 2; i<= n; i++)

            {

                if(prime % i == 0) {flag = 1; break;}

            }

            if(flag == 0)

            {total += prime;}

            else

            {flag = 0;}

        }

    }

    printf("%ld\n", total);

    return 0;

}


/*

소수를 판별하기 위해 제곱근을 사용, 2부터 제곱근 까지 나누어진다면 flag를 1로 설정하여 아무것도 하지 않고 제곱근까지 떨어지지 않는다면 flag는 초기화값 0 이므로 더함. for문 안에 else를 써서 떨어지지 않는 값을 더하면 2부터 제곱근 까지 나누어 떨어지지 않는 수 모두를 더하기 때문에 flag를 설정

*/





'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by thread1525

댓글을 달아 주세요

//

//  main.c

//  project euler

//

//  Created by 김일호 on 2015. 4. 25..

//  Copyright (c) 2015 김일호. All rights reserved.

//


#include <stdio.h>


int main(int argc, const char * argv[]) {

    int product = 0;

    

    for(int i =1; i<1000; i++)

        for (int j = 1; j<1000; j++){

            for (int k = 1; k<1000; k ++)

            {

                if( j < i && k < j)

                    break;

                if((i * i) + (j * j) == (k*k))

                {

                    product = i+j+k;

                    if(product == 1000)

                    {

                        printf("%d %d %d",i, j, k);

                        return 0;

                    }

                }

                else if (k+j>1000)

                {product = 0;break;}

                else if (k+i>1000)

                {product = 0;break;}

                product = 0;

            }

            if(i+j>1000){

                product = 0;

               break;

            }

        }

    return 0;

}



'Programing > Algorithm' 카테고리의 다른 글

Selection Sort  (0) 2015.09.27
프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
Posted by thread1525

댓글을 달아 주세요

#include <stdio.h>


int fibonacci(int n);

int main()

{

    int number;

    int total = 0;

    printf("input the number\n");

    scanf("%d", &number);

    printf("recursive fibonacci = %d \n", fibonacci(number));

}


int fibonacci(int n){

    if (n < 3)

        return 1;

    else return fibonacci(n-2) + fibonacci(n-1);

}


/*C++ 피보나치 합 구하기*/

#include <iostream>

using namespace std;


int fibonacci(int n);


int main()

{

int total = 0;

int n = 0;

for (int i = 0; i <= 5; i++)

{

n = fibonacci(i);

total += n;

}

cout << total << endl;

}


int fibonacci(int n)

{

if (n == 1 || n == 2)

return 1;

else if (n == 0)

return 0;

else

return fibonacci(n - 1) + fibonacci(n - 2);

}

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 10번  (0) 2015.07.29
프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요


#include <stdio.h>


int factorial(int x);

int main()

{

    printf("input the number\n");

    int size;

    scanf("%d", &size);

    

    int total = 1;

    for(int i = size; i>1; i--)

        total *= i;

    

    printf("%d recursive factorial is %d \n", size, factorial(size));

    printf("%d iterative factorial is %d \n", size, total);

}


int factorial(int x){

    if (x>1)

        return x * factorial(x-1);

    else return x;

}

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 9번  (0) 2015.04.25
Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요


#include <stdio.h>

void sort(int *x, int *y, int *z);


int main()

{

    int x=4, y=11, z=8;

    sort(&x, &y, &z);

    printf("%d %d %d\n",x,y,z);

}



void sort(int *x, int *y, int *z){

    int temp;

    if(*x < *y){

        temp = *x;

        *x = *y;

        *y = temp;

        sort(x, y, z);

    }

    else if(*y < *z){

        temp = *y;

        *y = *z;

        *z = temp;

        sort(x, y, z);

    }

    else if(*x < *z){

        temp = *x;

        *x = *z;

        *z = temp;

        sort(x, y, z);

    }

}



'Programing > Algorithm' 카테고리의 다른 글

Recursive Fibonacci  (0) 2015.04.06
순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요

문제: 소수 중 처음 6개를 나열하면 2, 3, 5, 7, 11, 13 이다. 이 때 6번째 소수는 13이다.

10001번째 소수는 무엇인가?


#include <stdio.h>

 

int main(){

    int count=0;

    int i;

    int j;

    for(i=2;;i++){

        for(j=2;j<=i;j++){

            if(i==j){

                count++;

                break;

            }

            else if((i%j)==0){

                break;

            }

            

        }

        if(count==10001) {break;}

    }

    printf("%d\n", i);


}

'Programing > Algorithm' 카테고리의 다른 글

순환/재귀 팩토리알 구현  (0) 2015.04.06
3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
프로젝트 오일러 4번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요

문제: 1부터 10까지의 자연수의 제곱의 합은 아래와 같습니다.

12 + 22 + ... + 102 = 385

1부터 10까지의 자연수의 합의 제곱은 아래와 같습니다.

(1 + 2 + ... + 10)2 = 552 = 3025

1부터 10까지의 자연수의 합의 제곱과 제곱의 합의 차는 3025 - 385 = 2640 입니다.

1부터 100까지의 자연수의 합의 제곱과 제곱의 합의 차는 얼마인가요?



#include <stdio.h>



int main(){

    int a=0;

    int b=0;

    

    int i;

    for(i=1;i<=100;i++)

        a += (i*i);

    for(i=1;i<=100;i++)

        b += i;

    b = b*b;

    

    printf("%d\n", b-a);


}


1번보다 쉬운거 같습니다.

'Programing > Algorithm' 카테고리의 다른 글

3개의 숫자를 내림차순으로 정렬  (0) 2015.04.06
프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
프로젝트 오일러 4번  (0) 2015.02.10
프로젝트 오일러 3번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요

문제: 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다.

그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까?



문제를 푼 알고리즘이 있는데 코딩으로 적용시키는 것이 까다로워서 일단 알고리즘 설명만 남기도록 하겠습니다.


제가 푼 알고리즘은 

문제에서 제시된 2520을 소인수분해 하여 찾았습니다.


2520= 2^3 * 3^2 * 5 * 7

이며, 소인수분해를 보시면 1~10까지 소인수를 조합하여 모든 수를 표현 가능 합니다.

그럼 이 수에 11~20의 소수를 먼저 곱하고

X = 2^3 * 3^2 * 5 * 7 * 11 * 13 * 17 * 19

11~20사이의 수를 표현 가능한지 확인 합니다.


2^4인 16이 표현 되지 못하는군요. 저 윗식에 2를 곱합니다.

X = 2^4 * 3^2 * 5 * 7 * 11 * 13 * 17 * 19

소인수를 보시면 1~20의 수 모두 표현이 가능하므로 정답이 되겠습니다.



PS) 해답을 보면 제가 풀은 알고리즘을 예시로 들고 log를 이용하여 새로운 식(일반해?라고 해야할까요)을 정의합니다.

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 7번  (0) 2015.02.10
프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
프로젝트 오일러 4번  (0) 2015.02.10
프로젝트 오일러 3번  (0) 2015.02.10
프로젝트 오일러 2번  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요

문제: 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다.

두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 x 99) 입니다.


세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까 ?


#include <stdio.h>


int main() {

 int i, j;

 int x;

 int sol = 0;

 int n1, n2, n3, n4, n5, n6;

 for (i = 999; i > 100; i--)

  for (j = 999; j > 100; j--){

   x = i * j;

   n1 = x / 100000;

   x = x % 100000;

   n2 = x / 10000;

   x = x % 10000;

   n3 = x / 1000;

   x = x % 1000;

   n4 = x / 100;

   x = x % 100;

   n5 = x / 10;

   x = x % 10;

   n6 = x / 1;

   if ((n1 == n6) && (n2 == n5) && (n3 == n4)){

    printf("n1 = %d,n2 = %d,n3 = %d,n4 = %d,n5 = %d,n6 = %d \n", n1, n2, n3, n4, n5, n6);

    x = i*j;

    if (x > sol){

     sol = x;

     break;

    }

   }

  }

 printf("%d \n", sol);

}


내가 짜고도 민망하다;; 3자리 x 3자리로 이루어진 가장 큰 대칭수는 6자리라고 단정 짓고 짠 알고리즘,



해답:

대칭수 P는 x,y,z로 구성 가능. P= a x b(a와 b는 100보다 크고 999보다 작은 정수)

P는 반드시 적어도 6자리로 긴 정수 일것이다. 왜냐하면 111111=143 x 777 이기 때문(P는 3자리 x 3자리로 이루어진 대칭수 111111보다 크거나 같을 것)

따라서,


P=100000x+10000y+1000z+100z+10y+x

P=100001x+10010y+1100z 

P=11(9091x+910y+100z)


11은 소수로 반드시 a, b는 11을 약수로 가짐

따라서 11로 나누어 지지 않는다면 대칭수가 아님.


largestPalindrome = 0

a = 999

while a >= 100

if a mod 11 = 0

b = 999

db = 1

else

b = 990 //The largest number less than or equal 999

 //and divisible by 11

db = 11

while b >= a

if a*b <= largestPalindrome

break

if isPalindrome(a*b)

largestPalindrome = a*b

b = b-db

a = a-1

output largestPalindrome

'Programing > Algorithm' 카테고리의 다른 글

프로젝트 오일러 6번  (0) 2015.02.10
프로젝트 오일러 5번  (0) 2015.02.10
프로젝트 오일러 4번  (0) 2015.02.10
프로젝트 오일러 3번  (0) 2015.02.10
프로젝트 오일러 2번  (0) 2015.02.10
Kadane's Algorithm  (0) 2015.02.10
Posted by thread1525

댓글을 달아 주세요

이전버튼 1 2 이전버튼

블로그 이미지
1525번 thread 입니다.
thread1525

공지사항

Yesterday9
Today1
Total6,171

달력

 « |  » 2019.10
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

최근에 달린 댓글

최근에 받은 트랙백

글 보관함