Computer Science/Algorithm(5)
-
[Java 알고리즘 기초] 다중반복문과 삽입/버블/선택 정렬(4장, 1109)
- 독학 교재: 정렬을 배우니 이제 정말 알고리즘을 배우는 실감이 난다. 어려운 내용은 아니지만, 각 정렬을 헷갈리지 않아야 할 것 같다. 다중 반복문 - 반복문 안에 반복문이 있는 걸 말한다. 즉 반복 처리 속에서 또 반복 처리를 진행하는 것. - 다중 반복문을 구성하는 외부와 내부의 반복문이 각각 어떤 반복 조건을 갖는지가 주요 포인트. - 이중 반복문까지는 필수로 알고 있어야 하고, 삼중 반복문은 자주 나오지는 않지만 종종 등장한다. 3차 이상은 잘 쓰이지 않는다고. 워낙 시간복잡도가 높아지다 보니 그런 게 아닐까 생각한다. 구구단 구현 - 다중 반복문 예시 - 외부 루프 카운터가 첫 번째 값으로 설정되고, 그 상태 그대로 내부 루프 카운터가 처음부터 마지막 값까지 변함. public class M..
2022.11.09 -
[Java 알고리즘 기초] 이진 탐색과 시간 복잡도 (3장/ 1105)
- 독학 교재: 시간복잡도 부분은 Udemy 강의도 참고하였다. 보통 알고리즘 책은 Big O 표기법을 설명하면서 시간복잡도를 가장 먼저 설명하는데, 이 책에서는 3장에 나왔다. 선형 검색과 이진 검색을 먼저 배운 뒤 둘의 시간복잡도를 비교하는 방식이라 알기 쉬웠다. 이진 검색(binary search) 정렬된 배열에서 원하는 데이터를 찾는 알고리즘. 선형 탐색은 배열이 정렬되어 있지 않아도 사용 가능한 알고리즘이었다. 이진 검색은 오름차순으로 정렬된 배열을 대상으로 설명한다. 이진 검색 알고리즘의 개요 검색 대상 배열의 중앙 요소를 확인하여 아래 중 하나를 실행 (A) 찾는 값과 같다면, 인덱스를 표시하고 종료 (B) 찾는 값보다 크다면, 검색 대상을 앞쪽으로 한정하여 좁힘 (C) 찾는 값보다 작다면,..
2022.11.05 -
[Java 알고리즘 기초] 반복문, 배열 기본 및 선형 검색 (2장/ 1104)
- 독학 교재: 아직까지는 수월했다. 인터넷서점에서 너무할 정도로 친절하다는 후기를 본 적이 있는데, 진도 나가기 부담스럽지 않아서 좋았다.(C와 자바 배열의 인덱스는 0부터 시작한다거나, 초깃값을 대입해서 변수를 초기화하는 것부터 언급한다. 이 포스팅에서는 생략하였음) 2-1장. 반복문과 배열의 기본 포인트1: 루프 카운터(반복 회수를 세는 변수)와 배열의 인덱스를 대응시키기 포인트2: 변수를 초기화하기 배열 요소의 합을 구하는 알고리즘 구현 자바 공부 경험이 있다면 아래 코드는 정말 익숙할 것이다. sum에 array[i] 값을 더한 후 i의 값을 증가시킨다는 점을 기억해 두자. public class SumOfArray { public static void main(String[] args) { i..
2022.11.04 -
[Java 알고리즘 기초] 알고리즘 워밍업 & 유클리드 호제법/최소공배수 (1장/ 1103)
- 독학 교재: 오늘은 알고리즘의 정의를 다시 내려보면서 알고리즘을 떠올리는 방법을 생각해보고, 문제를 만났을 때 그 처리를 분해하고 흐름을 나누어 실행하는 방법에 대해 공부했다. 보면 당연한 내용인데, 문제를 풀 때 이런 과정들을 따로 의식하지 않고도 자연스럽게 수행할 수 있을 때까지 연습하는 게 포인트일 것 같다. 요즘 기초에 대한 생각을 많이 한다.... 개발은 하지 않고 인터넷강의만 듣고 있거나 하는 것도 실력 향상에 걸림돌이 될 수 있지만, 개발을 하면서 가끔 기초 사항을 모르면 그것도 개발에 구멍이 나 있는 것 같단 느낌을 받아서이다. 그래서 이 책을 빠르게 공부하며 한 번은 개념을 짚고 가고 싶었다. 전에 보았던 에 따르면 알고리즘 문제 해결에 필요한 요소는 독해력, 배경지식, 문제해결력, ..
2022.11.03 -
[Java 알고리즘 기초] 알고리즘에 필요한 기초 문법 정리 (1101)
알고리즘 공부 전 체크가 필요한 문법들 에서 언급된, 알고리즘 공부 시작 전 기본적으로 알아야 한다고 쓰인 문법을 따로 정리했다. 자료형 - 정수 자료형: int, long(보통 int와 long을 사용), byte, short * 자바의 정수형 연산은 기본적으로 int로 진행함. - 실수 자료형: float, double - 문자 자료형: char - 논리 자료형(참/거짓 표현): boolean 배열 선언 자료구조(data structure) : 데이터의 집합 배열(array): 순서가 있는 집합 // 선언과 동시에 배열 크기를 지정하고 값도 초기화하는 방법 int[] odds = {1, 3, 5, 7}; String[] weekend = {"토", "일"}; // 배열 길이를 먼저 설정한 후 값은 나..
2022.11.01