변수값 바꾸는 함수, 배열 순서 바꿔주는 함수 작성하기

Project/algorithm 2015. 6. 7. 16:26

#include <stdio.h>

#include <iostream>

using namespace std;

//변수값을 스왑할때, *붙여서 주소값을 전달함 (*을 붙인다 -> 값이 아니라 주소를 전달함)

void swap(int *a, int *b)

{

int temp = 0;

temp = *a;

*a = *b;

*b = temp;

}

//배열의 특정 원소값을 변경, c의 경우 인자를 배열로 ㅂ다을 경우 값이 아니라 주소가 전달되므로 *를 안붙여도됨

void swap_arr(int arr[], int i, int j)

{

int temp = 0;

temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}


int main() {

int min, max;

int num1, num2;

int array_temp[10000] = { 0, };

array_temp[0] = 3;

array_temp[7] = 333;

printf("변경전 : %d, %d\n", array_temp[0], array_temp[7]);

swap_arr(array_temp, 0, 7);

printf("변경후 : %d, %d\n", array_temp[0], array_temp[7]);

cout << "input num1, num2 : " << endl;

cin >> num1>>num2;

swap(num1, num2);

cout << num1 << " " << num2 << endl;

return 0;

}

'Project > algorithm' 카테고리의 다른 글

소수 찾아내는 알고리즘  (0) 2014.06.02
부분 구간의 합 구하기  (0) 2014.05.25
케이크 나누기  (0) 2014.05.21
linear  (0) 2014.05.19

소수 찾아내는 알고리즘

Project/algorithm 2014. 6. 2. 09:18

소수를 찾아내는 알고리즘에는 크게 두가지 방법이 있다.


1. 무식하게 약수의 갯수를 구하는 방법


2. 에라토스테네스의 체를 이용하여 푸는 방법


에라토스테네스의 체를 이용하여 푸는 방법의 원리는 다음과 같다.





- 2부터 n까지의 수를 쭉 적고, 목록에서 지워지지 않는 수들을 순회함, 수의 배수를 지우기를 반복하다가


그 다음으로는 3의 배수를 모두 지우고, 5의 배수를 지우고, 7의 배수를 지우고... 쭉 제거를 하다 보면


남는 수들이 있는데 이를 체로 거른 뒤 남는 수들이 모두 결국 소수가 된다.


(그림 출처 : http://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4)



체를 이용하여 연산할 경우 부하가 확 줄어드니 한번쯤 적용해서 풀어보는 것도 좋을 것 같다.



'Project > algorithm' 카테고리의 다른 글

변수값 바꾸는 함수, 배열 순서 바꿔주는 함수 작성하기  (0) 2015.06.07
부분 구간의 합 구하기  (0) 2014.05.25
케이크 나누기  (0) 2014.05.21
linear  (0) 2014.05.19

부분 구간의 합 구하기

Project/algorithm 2014. 5. 25. 22:10

부분 구간은 연습 구간의 합을 구해야 되는 문제일 경우




1. 배열 이용해서 풀이 가능


2. 무슨소리인고 하면,


arr    -2    9    2    -6    7    -7    5


sum    0    -2    7    9    3    10    3    


============================


구간 2~4 = sum[5] - sum[2]


(10 -7 = 3)


============================


결국 arr[i]~[j]의 구간 합은 sum(j+1) - sum(j)


위와 같은 느낌으로 잡아주면 된다....

'Project > algorithm' 카테고리의 다른 글

변수값 바꾸는 함수, 배열 순서 바꿔주는 함수 작성하기  (0) 2015.06.07
소수 찾아내는 알고리즘  (0) 2014.06.02
케이크 나누기  (0) 2014.05.21
linear  (0) 2014.05.19

케이크 나누기

Project/algorithm 2014. 5. 21. 18:14

아인쉬타인 생일날 그는 가장 친한 두명의 친구를 파티에 초대했다. 그의 생일이 3 월 14일 파이 데이 여서 생일케익 대신에 생일파이를 준비했다.


그의 두 친구가 차례대로 파이의 일부분을 가지고 간 후 그가 남은 파이가 얼마가 될지를 알고자 한다. 우리가 할 일은 그를 도와서 남은 파이가 얼마인지를 알아내는 것이다.


입력


입력으로 두 줄이 주어지고 각 줄은 친구 한 명이 먹는 파이의 양이 분수로 입력된다. 첫수가 분자 , 두 번째 수가 분모이다.

두 분수의 합은 1 을 넘지 않는다.


출력


남은 파이의 양을 출력한다. 만약 남은 파이의 양이 없으면 0 을 출력하고 아니면 기약분수로 출력한다.

입출력 예


입력


1 4

1 4


출력


1/2


입력


1 4

2 3


출력


1/12


입력


33 99

66 99


출력


0


입력


2 17

5 23


- 케이크가 있는데, 전체의 량을 1로 잡고, 각각 두사람이 나눠 먹을시 남아있는 케이크가

얼마나 남았는지를 확인하는 알고리즘


-> 유클리드 호제법으로 풀이 가능함



'Project > algorithm' 카테고리의 다른 글

변수값 바꾸는 함수, 배열 순서 바꿔주는 함수 작성하기  (0) 2015.06.07
소수 찾아내는 알고리즘  (0) 2014.06.02
부분 구간의 합 구하기  (0) 2014.05.25
linear  (0) 2014.05.19

linear

Project/algorithm 2014. 5. 19. 10:20

프로그램 명: linear

제한시간: 1 초

세 수의 순서쌍을 찾는 문제이다. 순서쌍 (s1,s2,s3) 는 s2 - s1 = s3 - s2 를 만족.(s1 < s2 < s3)

예를 들어 , (1,2,3) , (2,4,6) , (14,21,28) 은 만족하는 순서쌍이다.


정렬된 집합 S 가 주어질 때 이를 만족하는 순서쌍의 개수를 출력하시오.


입력


첫 수는 집합 S 의 원소의 개수 s 이다. 원소의 개수는 3 개이상 30 개 이하이다.

다음 줄에는 s 개의 정수가 주어진다. 각 수는 1 이상 100 이하

출력


개수를 출력한다. 개수는 정수 범위를 넘지 않는다.

입출력 예


입력


7

1 2 3 4 6 8 9


출력


5


출처 : usaco


====================================================================================================


** 그렇게 어려운 문제는 아니다. 


s1,s2,s3의 위치를 잡아준 다음에, 문제의 조건을 그대로 3중 포문으로 해결하면 끝~


int arr[101];
 
int main()
{
    int n,cnt=0;;
    cin>>n;
    for(int i=0;i<n;i++) cin>>arr[i];
 
    for(int i=0;i<n-2;i++)
    {
        for(int j=i+1;j<n-1;j++)
        {
            for(int k=i+2;k<n;k++)
            {
                if(arr[k]-arr[j]==arr[j]-arr[i]) cnt++;
                else if(arr[k]-arr[j]>arr[j]-arr[i]) break;
            }
        }
    }
 
    cout<<cnt<<endl;
 
    return 0;
}