22/05/26

안은주·2022년 5월 30일
0
💡 Spring 강의 듣고 이해하기!!

[학습내용]


- 알고리즘

  • “컴퓨터를 활용한 문제 해결 과정에서 주어진 문제를 해결하는 일련의 방법 또는 절차이며, 문제해결 방법을 순서대로, 절차대로 나열한 것”

알고리즘의 특징

	
  ㅇ (입력,출력) - 입력은 없을수도 있으나, 출력은 반드시 하나 이상 생성되어야함

  ㅇ (유한성, Finiteness) - 한정된 수의 작업 후에는, 반드시 유한시간 내에 종료해야 함

  ㅇ (명확성, Definiteness) - 각 단계는 단순 명확해야하며, 모호하지 말아야 함

  ㅇ (유효성, Effectiveness) - 모든 명령들은 실행가능해야 함
  ※ 이상의 것들은, 미국 스탠포드대학 Knuth 교수가 제시 함 ("The Art ofComputerProgramming")

  ㅇ (결정성, Determinisim) - 매 단계 마다, 입력과 바로 전 단계의 결과에 따라 유일하게 결정됨

  ㅇ (일반성, Generality) - 특정 입력값들 만 아니라 요구되는 모든 입력에도 적용 가능

  ㅇ (효율성,Efficiency) - 알고리즘은 가능한 효율적이어야 함

복잡도

알고리즘의 성능을 객관적으로 평가하는 기준을 복잡도(complexity)라고 한다.

  • 시간 복잡도(time complexity): 실행에 필요한 시간을 평가한 것
  • 공간 복잡도(space complexity): 기억 영역과 파일 공간이 얼마나 필요한가를 평가한 것

알고리즘의 표현 방법

1. 자연어

사람이 사용하는 국어나 영어와 같은 언어를 이용해 나타내는 방법

2. 순서도

주어진 문제를 해결하거나 업무를 처리할 때, 처리할 일의 순서를 한 단계씩 구분하여 약속된 도형으로 표현한 그림

https://blog.kakaocdn.net/dn/cijwd5/btqVOrCTri7/jg2bGrYj005kgrnsIa7k7K/img.png

3. 의사코드

자연어로 표현한 것을 연상 기호 등을 사용하여 쉽고 간단하게 문제의 처리 과정을 표현한 것

A <- 1 // A에 1을 저장한다.
B <- 1 // B에 1을 저장한다.
SUM <- A+B // A와 B를 더한 것을 SUM에 저장한다.
if(A>B)
then print A //A가 B보다 크면 A를 출력한다.
else print "감자"//아니라면 "감자"를 출력한다.

4, 프로그래밍 언어

Java, C언어, C++ 등을 이용하여 나타낸 것

public class Main  {
    public Main(){
        int a = 1;
        int b = 1;
        System.out.println(a);
        if(a > b){
            System.out.println(b);
        }
    }
    public static void main(String[] args) {
	// write your code here
    new Main();
    }
}

- 선형 검색 알고리즘 = (순차 검색 알고리즘)

  • 선형 검색은 주어진 데이터 앞에서부터 순차적으로 원하는 값을 찾는 방식이다.
  • 데이터 배열의 처음부터 끝까지 차례대로 비교하여 원하는 데이터를 찾아내는 알고리즘.
  • 따라서, 구현은 매우 간단하지만 많은 데이터에서 검색을 하기에는 부담이 됨.
  • 단방향으로 탐색을 수행함.
  • 정렬되어 있지 않은 데이터 배열에서 평균적으로 (n+1)/2번의 비교를 거치며, 최악의 경우 n번의 비교를 거칩니다. 시간 복잡도는 O(n).
< [5, 2, 13, 1, 8] 에서 1을 검색하는 과정 >

https://t1.daumcdn.net/cfile/tistory/2726B2355757B93531

public static int LinearSearch(int[] arr, int find) {
	for (int i = 0; i < arr.length; i++) {
		// 찾는 값이 배열에 있으면
		// 그것의 위치를 반환함.
		if (find == arr[i]) {
			return i;
		}
	}
		// 찾는 값이 없음.
		return -1;
}

🗒 MEMO

💡 하팅

회고🤔


오늘은 간단한 게시판을 구현해봤다, 어려웠다.
복습만이 살길이다!!

profile
우당탕탕 개발일지🤣

0개의 댓글