배운 내용
- 알고리즘
1. algorithm(알고리즘)
algorithm은?
컴퓨터를 이용하여 주어진 문제를 풀기 위한 방법이나 절차.
알고리즘과 자료구조는 모든 언어에서 사용 되지만 자바를 사용하여 체험학습 의미로 예제를 풀어보자
- 위의 예제는 배열의 요소 수를 입력하고 각 배열의 값을 입력한 후에 검색하여 해당 값을 호출하는 예제이다.
- seqSearch메소드의 파라미터 값을 선언한다.
- int i = 0을 선언하여 인덱스 값을 선언
- while문을 통하여 반복하고 i와 배열 n이 같다면 검색을 실패하고 배열과 검색값이 같다면 검색이 성공할 수 있도록 선언한다.
- 이번 예제는 중앙값을 두어 중앙값보다 작거나 크다면 그 나머지 값을 버려서 효율적인 계산을 하는 예제이다.
- 이런 계산을 하려면 처음과 끝을 알아야 하기 때문에 각 끝 별 인덱스 값을 구한다.
- do while문을 사용하여 무조건 do엔 무조건 중앙값으로 시작하도록 하고 중앙값이 입력값과 같다면 바로 return을하고 키값이 크다면 중앙 값보다 작은 값을, 작다면 큰 값을 버려서 좁힌다.
- 문제로 주어진 Main메소드이다.
- switch문으로 각 메소드별 호출을 하게끔 선언되어있다.
- 푸시하기 위해서는 먼저 ptr이 max보다 크면 예외가 발생하기 때문에 예외를 처리해준다.
그리고 stk[prt += 1] = x; 를 리턴해주어 x에 배열이 하나씩 추가될 수 있도록 한다. - 데이터를 팝 해주기 위해선 먼저 배열 값이 없으면 예외가 발생하기 때문에 처리해준다.
그리고 정상에 있는 것을 꺼내야 하기 때문에 -로 감해준다. - 정상에 있는 데이터를 찾기 위해선 일단 배열 값이 있어야 하며 ptr이 0부터 시작하기 때문에 -1를 해준다.
- 검색은 i가 ptr -1이 되어야 하고 (이는 위에서 설명했듯이 인덱스 값을 고려) i는 0보다 커야하며 i는 -1씩 감되어야 한다.
그리고 x와 배열값이 같으면 0을 return하여 검색되게 한다. - 아래서 위로 출력하기 위해선 ptr이 있어야 하며 i가 ptr보다 크고 증가되어 반복되며 하나씩 출력할 수 있게 한다.
'KOSTA' 카테고리의 다른 글
KOSTA 교육(HAVING, 함수, DDL, DML, 제약조건) (0) | 2021.03.10 |
---|---|
KOSTA 교육 (Algorithm, 알고리즘, JSON, 라이브러리) (0) | 2021.03.09 |
KOSTA 교육 (File, Thread) (0) | 2021.03.05 |
KOSTA 교육 (ArrayList, Sort, Comparable, Comparator, 입출력, Stream) (0) | 2021.03.03 |
KOSTA 교육 (정규표현식, 자료구조, ArrayList, Stack, Hashmap, Queue) (0) | 2021.03.03 |