목록CS/알고리즘 (17)
기록방
Do it! 알고리즘 코딩 테스트 - 자바 편 http://www.easyspub.co.kr/20_Menu/BookView/500/PUB www.easyspub.co.kr 3장 : 자료구조 💡 데이터를 효율적으로 저장, 접근, 수정하기 위한 그릇 문제의 입력 데이터 형태와 사용해야 하는 알고리즘에 따라 적절한 자료구조를 선택하는 것이 매우 중요하다 03-1 배열과 리스트 배열과 리스트는 비슷한 점도 많지만 다른 점도 많다 배열과 리스트의 핵심 이론 배열 : 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스로 참조 선언한 자료형 값만 저장 가능 배열의 특징 인덱스를 사용하여 값에 바로 접근 가능 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어려움(해당 인덱스 값 이동 필요) 구조가..
Do it! 알고리즘 코딩 테스트 - 자바 편 http://www.easyspub.co.kr/20_Menu/BookView/500/PUB www.easyspub.co.kr 2장 : 코드의 논리 오류를 어떻게 잡을까? 💡 가장 뛰어난 오류 탐색 방법, 디버깅 코드에서 논리 오류를 찾을 수 있는 가장 최선의 방법은 ‘디버깅’ 02-1 디버깅은 왜 중요할까? 디버깅(debugging) : 프로그램에서 발생하는 문법 오류나 논리 오류를 찾아 바로잡는 과정 (문법 오류는 컴파일러가 자동으로 찾아 주므로 테스트할 때 문제가 되지 않음) 디버깅의 중요성 많은 사람들이 조금의 차이로 코딩 테스트에 떨어지곤 했음 → 디버깅을 했다면 통과했을 것 많은 사람들이 문법을 배우는 과정에서 디버깅을 가볍게 생각하고 넘어감 하지만..
Do it! 알고리즘 코딩 테스트 - 자바 편 1장 : 어떤 알고리즘으로 풀어야할까? 💡 알고리즘 선택의 기준이 되는 시간 복잡도 코딩 테스트의 핵심 중 하나는 시간 복잡도를 고려해 적절한 알고리즘을 선택하는 것 01-1 시간 복잡도 표기법 알아보기 시간복잡도 : 주어진 문제를 해결하기 위한 연산 횟수 (일반적으로 1억번 연산을 1초로 간주해서 예측) 시간 복잡도 유형 빅-오메가(Ω(n)) : 최선일 때(best case)의 연산 횟수를 나타낸 표기법 빅-세타(Θ(n)) : 보통일 때(average case)의 연산 횟수를 나타낸 표기법 빅-오(O(n)) : 최악일 때(worst case)의 연산 횟수를 나타낸 표기법 ⇒ 코딩 테스트에서는 빅-오 표기법을 기준으로 수행 시간을 계산 (최악을 염두) 01-..
버블 정렬(Bubble Sort) : 리스트의 두 요소씩 비교해가며 정렬 [python] 1) 뒤에서부터 오름차순 정렬 arr = [9,2,1,4,10,3,7,5,6,8] for i in range(len(arr)-1) : #진행 반복 횟수 (n-1회) for j in range(0, len(arr)-1-i) : #비교할 요소의 인덱스 if arr[j+1] < arr[j] : #큰 수를 뒤쪽으로 교환 temp = arr[j+1] arr[j+1] = arr[j] arr[j] = temp print(arr) 2) 뒤에서부터 내림차순 정렬 arr = [9,2,1,4,10,3,7,5,6,8] for i in range(len(arr)-1) : #진행 반복 횟수 (n-1회) for j in range(0, len..
삽입정렬(Insertion Sort) : 리스트의 원소를 정렬이 완료된 부분에서 맞는 자리를 찾아 삽입하여 정렬 [python] 1) 오름차순 arr = [9,2,1,4,10,3,7,5,6,8] for i in range(1,len(arr)) : #정렬할 원소 인덱스 선택 temp = arr[i] #삽입하여 정렬할 원소를 저장 for j in range(i, -1, -1) : #정렬된 부분 인덱스 선택 if arr[j-1] > temp : #정렬한 원소보다 크면 뒤로 미룸 arr[j] = arr[j-1] else : #크지 않다면 멈추고 break arr[j] = temp #그 자리에 정렬할 원소를 삽입 print(arr) 2) 내림차순 arr = [9,2,1,4,10,3,7,5,6,8] for i in..