본문 바로가기
Programming/Algorithm

C언어 알고리즘&자료구조 #0 세 값의 최대/최소를 구하는 알고리즘

by yoiii 2021. 2. 3.

#최댓값을 구하는 알고리즘

변수 a,b,c의 최댓값을 구하는 알고리즘에 대해서 알아보자.

다음 소스코드는 사용자로 부터 main 함수에서 X,Y,Z의 값을 입력받은 후 MAX함수로 보내 최댓값을 구하는 알고리즘이다.

 

#include <stdio.h>

int MAX(int x, int y, int z);

int main(void) {
	int x, y, z;
	printf("Calculate Max\n");
	printf("X = "); scanf_s("%d", &x);
	printf("Y = "); scanf_s("%d", &y);
	printf("Z = "); scanf_s("%d", &z);

	printf("Max is %d\n", MAX(x,y,z));
	return 0;
}

int MAX(int x, int y, int z) {
	int max = x;
	if (y > max) max = y;
	if (z > max) max = z;
	return max;
}

 

 

MAX 함수의 최댓값을 구하는 과정은 다음과 같다.

1. max에 x값을 대입한다.

2. y값이 max보다 크다면, max에 y값을 넣는다.

3. z값이 max보다 크다면, max에 z값을 넣는다.

 

이처럼 순차적으로 실행되는 구조를 순차적(Concatenation)구조 라고 부른다.

이를 순서도(Flowchart)를 이용해 나타내 보면 다음과 같다.

순서도(Flowchart)란, 자료의 흐름을 파악하기 쉽도록 그림으로 나타낸 것이다.

프로그램의 흐름은 검은색 선을 따라서 이동하며, 각 도형에서 자료가 처리된다.

여기서, 직사각형의 → 는 자료의 대입를 의미한다. 예를들어 'x→max'는 변수 x의 값을 변수 max에 대입하라는 의미이다.

또한 다이아몬드 도형은 조건문을 의미한다. 다이아몬드 도형 안의 식이 True 인지 False 인지에 따라 분기 방향이 달라진다.

순서도(Flowchart)에 대한 내용은 나중에 자세히 알아볼 것이다.

 

x,y,z 값에 3,4,5를 넣었다고 가정하면, 자료는 다음 빨간색 화살표를 통해서 이동하게 된다.

비쥬얼 스튜디오를 이용해서 최댓값을 구하는 알고리즘을 실행해 보면, 정상적으로 값이 출력된다.


#최솟값을 구하는 알고리즘

최솟값을 구하는 알고리즘은 최댓값을 구하는 알고리즘의 구조와 동일하기에, 부연 설명 없이 소스코드와 실행 결과만 보고 넘어가자

 

#include <stdio.h>

int MIN(int x, int y, int z);

int main(void) {
	int x, y, z;
	printf("Calculate Min\n");
	printf("A = "); scanf_s("%d", &x);
	printf("B = "); scanf_s("%d", &y);
	printf("C = "); scanf_s("%d", &z);

	printf("Min is %d\n", MIN(x,y,z));
	return 0;
}

int MIN(int x, int y, int z) {
	int min = x;
	if (y < min) min = y;
	if (z < min) min = z;
	return min;
}


... 다음 글은 개인적인 알고리즘 공부 내용을 기록한 것입니다.

댓글