컴퓨터 알고리즘 :
컴퓨터 5대 장치(기능) ->
제어장치 외 입력 장치, 저장 장치, 연산 장치, 출력 장치
키보드와 마우스가 입력이고
메모리나 하드디스크가 저장 장치이다
CPU는 제어 장치 및 연산 장치이고 액정 디스플레이나 프린터는
출력 장치이다 제어 장치가 프로그램의 내용을 해석하여 실행하면
그에 맞게 입력 장치, 기억 장치, 연산 장치, 출력 장치가 작동하게 된다
컴퓨토에서 처리를 입력, 기억, 연산, 출력의 네가지 또는 입력 연산 출력 세가지
나누어 생각을 하는 과정이 프로그래밍 사고력이라고 한다
처리의 흐름을 순차적으로 분기, 반복적으로 세 가지로 나누어 생각하는 과정이다
알고리즘 문제를 통해서 만들어 본 가위바위보 문제
int user = (int) (Math.random() * 3) + 1;
int computer = (int) (Math.random() * 3) + 1;
// 1 : 가위, 2 : 바위, 3 : 보
String result = "무승부";
if ((user == 1 && computer == 3) || (user == 2 && computer == 1) || (user == 3 && computer == 2)){
result = "플레이어가 이겼습니다";
} else if ((user == 3 && computer == 1) || (user == 1 && computer == 2) || (user == 2 && computer == 3)) {
result = "컴퓨터가 이겼습니다";
}
System.out.println(result);
유클리드 호제법 :
유클리드 호제법은 알고리즘이란 무엇인가? 를 설명하는 소재로 자주 거론이 된다고 한다
알고리즘은 명확하고 유한해야 한다고 한다
인간의 직감에 의존해 애매모호한 부분이 있거나 언제 끝날지 모르는 절차는
알고리즘이라고 부를 수 없다
두 정수의 최대공약수(모두를 나눌 수 있는 최댓값)를 구하는 알고리즘
유클리드 호제법의 일반적인 알고리즘
1. 두 정수의 큰 쪽에서 작은 쪽을 빼는 것을, 양쪽이 같아질 때까지 반복하는 것
2. 같아진 값이 최대공약수가 된다
~가 될 때까지 반복한다 의사코드,
c,자바에서는 ~라면 반복한다로 바꿀 필요가 있다
두 정수의 큰 쪽에서 작은 쪽을 빼는 것을 두 정수가 동일하지 않으면 반복
int num1 = 30;
int num2 = 50;
while (num1 != num2){
if(num1 > num2){
num1 = num1 - num2 ;
}else {
num2 = num2 - num1;
}
}
System.out.println(num1);