good_da22 's devLog

algorithm 16

완전 검색(Exhaustive Search)

완전 검색(Exhaustive Search) 문제의 해법으로 생각할 수 있는 모든 경우의 수를 나열해보고 확인하는 기업 brute-force 혹은 generate-and-test 기법이라고도 한다. 모든 경우의 수를 테스트한 후, 최종 해법을 도출 상대적으로 빠른 시간에 문제 해결(알고리즘 설계) 가능 일반적으로 경우의 수가 상대적으로 작을 때 유용 시간적으로 불리, 시간 복잡도 계산 필요 중복 계산(호출)이 있을 경우, 메모이제이션, 가지치기 고려 그외 경우 아이디어 바꾸기 수행 속도는 느리지만 해답을 찾아낼 가능성이 크다 완전 검색으로 접근하여 해답을 도출, 성능 개선을 위해 다른 알고리즘을 사용하고 해답을 확인하는 것이 바람직 많은 종류 문제들이 특정 조건을 만족하는 경우나 요소를 찾는것 순열(pe..

탐욕 알고리즘(greedy algorithm)

반복(iteration) 과 재귀(recursion) 반복과 재귀는 유사한 작업을 수행 반복은 수행하는 작업이 완료될 때까지 계속 반복, 단위 반복 같은 내용, 같은 작업을 일반화를 통해서 단위 반복 재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용하는 방법 하나의 큰 문제를 해결할 수 있는(해결하기 쉬운) 더 작은 문제로 쪼개고 결과들을 결합한다. 반복문이 아닌 재귀 함수 구현으로 메소드 호출 재귀 함수(recursive function) 함수 내부에서 직접 혹은 간접적으로 자기 자신을 호출하는 함수 자신을 통해 자신을 정의한다. 일반적으로 재귀적 정의를 이용해서 재귀 함수를 구현 기본 부분(basic part)와 유도 부분(inductive part)로 구성 재귀적 프로그램..

재귀(recursion)

반복(iteration) 과 재귀(recursion) 반복과 재귀는 유사한 작업을 수행 반복은 수행하는 작업이 완료될 때까지 계속 반복, 단위 반복 같은 내용, 같은 작업을 일반화를 통해서 단위 반복 재귀는 주어진 문제의 해를 구하기 위해 동일하면서 더 작은 문제의 해를 이용하는 방법 하나의 큰 문제를 해결할 수 있는(해결하기 쉬운) 더 작은 문제로 쪼개고 결과들을 결합한다. 반복문이 아닌 재귀 함수 구현으로 메소드 호출 재귀 함수(recursive function) 함수 내부에서 직접 혹은 간접적으로 자기 자신을 호출하는 함수 자신을 통해 자신을 정의한다. 일반적으로 재귀적 정의를 이용해서 재귀 함수를 구현 기본 부분(basic part)와 유도 부분(inductive part)로 구성 재귀적 프로그램..

리스트(List)

리스트(List) 순서를 가진 데이터의 집합을 가리키는 추상자료형(abstract data type) 동일한 데이터를 가지고 있어도 상관 없다. 데이터 중복 허용 순서 -> index 관리(offset) 구현 방법에 따라 크게 두 가지로 나뉜다. 순차 리스트 : 배열을 기반으로 구현된 리스트 연결 리스트 : 메모리의 동적할당을 기반으로 구현된 리스트 순차 리스트 구현 방법 1차원 배열에 항목들을 순서대로 저장 데이터의 종류와 구조에 따라 구조화된 자료구조를 만들어 배열에 저장할 수도 있다. 데이터 접근 : 배열의 인덱스를 이용해 원하는 위치의 데이터에 접근할 수 있다. 삽입 연산 : 삽입 위치 다음의 항목들을 뒤로 이동해야 한다. 삭제 연산 : 삭제 위치 다음의 항목들을 앞으로 이동해야 한다. 순차 리스..

표준 입출력 I/O

표준 입출력 System.in System.out System.err 대상 변경 System.setOut() System.setErr() System.setIn() java.util.Scanner 파일, 입력 스트림등에서 데이터를 읽어 구분자로 토큰화 다양한 타입으로 형변환하여 리턴하는 클래스 Scanner(File source) Scanner(InputStream source) Scanner(String source) 입력 스트림을 다루는 방법을 몰라도 쉽게 입력처리 가능 데이터 형변환으로 인한 편리함 대량의 데이터 처리 시 수행시간 비효율적 Scanner 주요 메서드 nextInt() int 타입 반환 유효 문자열 후 White space 문자를 만나면 처리 유효 데이터가 식별이되면 구분자를 만날 때..

SW 문제 해결

SW 문제 해결 프로그래밍을 하기 위한 많은 제약 조건과 요구 사항을 이해, 최선의 방법을 찾아내는 능력 추상적인 기술, 명확히 정의된 실체가 없다. 문제 해결 과정 문제를 읽고 이해 문제를 익숙한 용어로 재정의 해결 계획 수립 계획 검증 프로그램으로 구현 복기 및 개선 방법 탐색 문제 해결 전략 직관과 체계적인 접근 비슷한 문제 해결 경험 단순한 방법에서 시작 문제를 단순화 그림 및 수식으로 표현 문제 분해 뒤에서 접근 특정 형태의 정답만을 고려 알고리즘 성능 정확성 : 얼마나 정확하게 동작하는가 작업량 : 얼마나 적은 연산으로 결과를 만들 수 있는가 메모리 사용량 : 얼마나 적은 메모리를 사용하는가 단순성 : 얼마나 둔순한가 최적성 : 더 이상 개선할 여지없이 최적화되었는가 시간 복잡도 : 연산의 작..