27
Program MADE IN BRAIN 알알알알알 ‘알알’ 알알알알 24 th 알알알 Hanyang University, EECS, JARAM

Program made in brain

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Program made in brain

Hanyang University, EECS, JARAM

Program MADE IN BRAIN알고리즘의 ‘느낌’ 알아보기

24th 이시야

Page 2: Program made in brain

Hanyang University, EECS, JARAM

프로그래밍이란 ?

99%

1%

Page 3: Program made in brain

Hanyang University, EECS, JARAM

1% 의 영감

Page 4: Program made in brain

Hanyang University, EECS, JARAM

그래서 프로그래밍이란 ?

1%

99%

Page 5: Program made in brain

Hanyang University, EECS, JARAM

프로그램 == 생각들의 집합프로그램 == 알고리즘의 집합

Page 6: Program made in brain

Hanyang University, EECS, JARAM

알고리즘문제를 해결하기 위한 절차나 방법

Page 7: Program made in brain

Hanyang University, EECS, JARAM

알고리즘의 연구

고안 검증 분석 테스트

Page 8: Program made in brain

Hanyang University, EECS, JARAM

알고리즘의 분석

정확성 작업량 기억 장소 사용량 단순성 최적성

Page 9: Program made in brain

Hanyang University, EECS, JARAM

알고리즘의 속도

O(1) O(log N) O(N) O(N log N) O(N2) O(N3) O(2n)

Page 10: Program made in brain

Hanyang University, EECS, JARAM

알고리즘의 효과한 문제를 푸는 여러 가지 방법의 예시

Page 11: Program made in brain

Hanyang University, EECS, JARAM

1 부터 N 까지의 합

?

Page 12: Program made in brain

Hanyang University, EECS, JARAM

1~

N

반복문

이용

수식

이용

sumOneToN(int n){int result = 0;for (int i =1 ; i<=n ; i++)

result +=I;return result;

}

sumOneToN(int n){return n * (n + 1) / 2;

}

Page 13: Program made in brain

Hanyang University, EECS, JARAM

GC

D

구하기

정의

이용

유클리드

알고리즘

int greatestCommonDivisor(int num1, int num2){int result = 1;int minGCM = 1;int bignum = (num1<=num2)?num2:num1;for(int i= bignum;i>minGCM;i--){

if(num1%i==0 && num2%i==0){result=i;return result;

}}return minGCM;

}

int greatestCommonDivisor (int num1, int num2){int temp;while(num1 != 0){

if(num1<num2){temp = num1;num1=num2;num2=temp;}num1 = num1-num2;

}return num2;

}

Page 14: Program made in brain

Hanyang University, EECS, JARAM

GC

D

구하기

유클리드

알고리즘

개선된

유클리드

알고리즘

int greatestCommonDivisor (int num1, int num2){int temp;while(num1 != 0){

if(num1<num2){temp = num1;num1=num2;num2=temp;}num1 = num1-num2;

}return num2;

}

int greatestCommonDivisor (int num1, int num2){int temp;while(num2 != 0){

temp = num1 % num2num1=num2;num2=temp;

}return num2;

}

Page 15: Program made in brain

Hanyang University, EECS, JARAM

ICPC acm with Algorithm

Page 16: Program made in brain

Hanyang University, EECS, JARAM

문제 1. 코인

10 원이 K 개 , 50 원이 L 개 , 100 원이 M 개 500 원이 N 개 있다 . 총 금액을 구하시오

입력› 한 줄에 정수인 K, L, M, N 을 순서대로 입력한다 .

(0 <= K, L, M, N <= 100) 출력

› 결과값은 총 금액을 계산한 값이다 .

Page 17: Program made in brain

Hanyang University, EECS, JARAM

문제 2. 소수 판별 하기

1 보다 큰 정수 P 가 1 과 P 자신 이외의 양의 약수를 가지지 않을 때의 P 를 소수라고 부른다 .이를테면 2, 3, 5, 7, 11, 13, 17, 19, 23 등은모두 소수이다 .4, 6, 16 등과 같이 소수가 아니면서 2 이상인자연수를 합성수라고 정의하며 , 1 은 소수도아니고 합성수도 아닌 수이다 .

주어진 자연수 N 의 소수여부를 판정해라 .

Page 18: Program made in brain

Hanyang University, EECS, JARAM

문제 2. 소수 판별 하기

Ex) 3 -> YES 입력

› N 은 1 <= N <= 10000000 사이의 범위를 가진다 .

출력› N 이 소수인 경우에는 Yes 를 출력하고 N 이 소수가

아닌 경우에는 No 를 출력한다 .

Page 19: Program made in brain

Hanyang University, EECS, JARAM

소수

판별

정의에

의한

판별

계량

방법

Boolean isPrime(int n){for(int i = 2;i<=n;i++){

if(n%i == 0)return false;

}return true;

}

Boolean isPrime(int n){Int end = (int)sqrt(n);

for(int i = 2;i<=end;i++){if(n%i == 0)

return false;}return true;

}

Page 20: Program made in brain

Hanyang University, EECS, JARAM

문제 3. 수 뒤집기

뒤집어서 합한 뒤 대칭이 되는 수인지 아닌지 판단

Ex) 124 -> 421 124+421 = 545 입력

› Testcase T 는 1<=T<=10› 정수 N 은 10<= N<=100000

출력› 대칭이면 YES› 아니면 NO

Page 21: Program made in brain

Hanyang University, EECS, JARAM

문제 4. Molar mass

'c' carbon , 'h' hydrogen , 'o' oxygen,and 'n' nitrogen without parn-theses.the standard atomic weights for 'c' 'h' 'o' 'n‘

Input› Ex) C6H5OH

output› The line should contain the molar mass of

the given molecular formula.› Ex) 94.108

Page 22: Program made in brain

Hanyang University, EECS, JARAM

알고리즘 ++

Page 23: Program made in brain

Hanyang University, EECS, JARAM

자료구조

배열 스택 힙 트리 그래프

Page 24: Program made in brain

Hanyang University, EECS, JARAM

정렬

거품 정렬 선택 정렬 삽입 정렬 쉘 정렬 퀵 정렬 병합 정렬 힙 정렬 기수 정렬

Page 25: Program made in brain

Hanyang University, EECS, JARAM

알고리즘 속도를 위한 기법

상태저장 자료구조 보완 나누어 풀기 점화식과 자료저장 수식 이용

Page 26: Program made in brain

Hanyang University, EECS, JARAM

참고 자료

Wiki Pedia C 로 배우는 알고리즘 생각하는 프로그래밍

Page 27: Program made in brain

Hanyang University, EECS, JARAM

Q&A?