공부/알고리즘

[알고리즘-01] 알고리즘, 순서도

줭♪(´▽`) 2021. 3. 14. 15:19

1. 알고리즘

1) 알고리즘이란?

 

1. 문제를 해결하기 위한 것
2. 명확하게 정의되고 순서가 있는 유한 개의 규칙으로 이루어진 집합

 

2) 순차적 구조와 선택 구조

import java.util.Scanner;


public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		System.out.print("a의 값: "); int a = sc.nextInt();
		System.out.print("b의 값: "); int b = sc.nextInt();
		System.out.print("c의 값: "); int c = sc.nextInt();
		
		int max = a;
		if(b > max) max = b;
		if(c > max) max = c;
		
		System.out.println("최대값 : " + max);
	}
	
}

- 세 값을 순서대로 입력받아 최대값을 구하는 프로그램

- 순차적(concatenation) 구조 : 순차적으로 실행되는 구조

- 선택(selection) 구조 : 식의 평가 결과에 따라 프로그램의 실행 흐름을 변경 (if문 등)

 

3) 순서도(flowchart)

- 프로그램의 순서를 이해하기 쉽게 그림으로 나타낸 것

 

(1) 데이터(data) : 데이터의 입력과 출력을 나타냄

 

(2) 처리(process) : 여러 종류의 처리 기능을 수행 (정보의 값, 자료형, 위치를 바꾸도록 정의한 연산이나 연산집합의 실행 또는 연속적인 몇 가지 흐름 가운데 하나의 방향을 결정하는 연산집합이나 연산군의 실행)

 

(3) 미리 정의한 처리(predefined process) : 서브 루틴 및 모듈 등 다른 곳에서 이미 정의한 하나 이상의 연산 또는 명령어들로 이루어진 처리

 

(4) 판단(decision) : 하나의 입구와 하나 이상을 선택할 수 있는 출구가 있고, 기호에서 정의한 조건을 평가하여 하나의 출구를 선택함

 

(5) 루프 범위(loop limit) : 루프의 시작 기호(반복 전에 판단하는 경우) 또는 종료 기호(반복 후에 판단하는 경우) 안에 초깃값(초기화), 증갓값, 종룟값(종료 조건)을 표기함

 

(6) 선(line) : 제어의 흐름을 나타냄, 흐름의 방향을 분명히 나타내고자 할 때 화살표를 붙임

 

(7) 단말(terminator) : 외부 환경으로 나가거나 외부환경에서 들어오는 것

 

4) 조건 판단과 분기

import java.util.Scanner;


public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수를 입력하세요: ");
		int n = sc.nextInt();
		
		if(n > 0)
			System.out.println("양수입니다.");
		else if(n < 0)
			System.out.println("음수입니다.");
		else
			System.out.println("0입니다.");
	}
}

- 입력한 정숫값의 부호(양수/음수/0)를 판단하여 출력하는 프로그램

- 실행되는 부분은 3가지 중 한 가지뿐임

- 두 가지가 동시에 실행되는 경우 X

- 하나도 실행되지 않는 경우 X

 

 

 

 

 

참고 - Do it! 자료구조와 함께 배우는 알고리즘 입문 : 자바 편 (저자 : 보요 시바타, 출판 : 이지스 퍼블리싱)