항해99

06.14 항해99 8일차

센트21 2021. 6. 15. 00:17

이번주 배운것 및 노트 :

더보기

이진탐색 > 정렬 필요.

순차탐색

 

// 연산자 : 소수점 이하 버리고 몫만.

 

Del list[N:N] : 인덱스 n~n의 리스트 삭제

List.remove(value) : 가장 먼저 발견된 요소 삭제

range(시작숫자,종료숫자,스텝) - range(5) > 1,2,3,4,5

 

재귀함수 : 자신을 반복하는 코드 - 목적 (점점 좁혀가는 것)

재귀함수 내에 자신의 함수.

탈출 조건 필수. (If함수로 return 걸기)

 

장점 - 간결하고, 명확

 

팩토리얼 = 1부터 N까지의 정수를 모두 곱한 것.

3! = 3*2*1 

 

정열 

Array.sort()

> O(N*logN)

 

집합 : 중복을 허용하지 않는 자료형 > set[값1,값2,값3,]

 

 

*들어가고 나오는 곳이 정해져있는 자료구조

스택 : Last in, First out

큐 : First in, First out

*해쉬: 고정된 길이의 데이터

 

정렬 - 데이터 나열법 : 효율적 탐색가능.

 

버블정렬 - 마지막-1번째 자료와 마지막 자료를 비교 및 교환하며 정렬

Swap > a, b = b, a

 

 

선택정렬-  최솟값 선택 후 변경

 

삽입정렬- 비교 후 필요할때 올바른 위치에 ‘삽입’

- 정렬을 유지하면서 변경.

-거의 정렬되어있을 경우, 시간이 최소 N 걸릴 수 있음

 

(중요)병합정렬- 합치면서 정렬

 

**분할정복 - 문제를 작은 문제로 분리, 각각 해결 후 원래 문제를 해결하기.

 

스택 : 한쪽 끝으로만 자료를 넣고 꺼낼 수 있는 구조(LIFO)

-push(data) : 맨위에 데이터 넣기

-pop() : 맨 위의 데이터 뽑기

-peek() : 맨위의 데이터 보기

-IsEmpty() : 스택의 공백여부 반환

 

큐 : 한쪽 끝으로 자료를 넣고 다른 끝으로 자료를 빼는 선형구조(FIFO)

-enqueue(data) : 맨 뒤에 데이터 추가

-dequeue(): 맨 위의 데이터 뽑기

-peek(): 맨 위의 데이터 보기

-isEmpty(): 큐의 공백여부 반환

 

해쉬: 키를 매핑할 수 있는, 연관배열 추가에 사용되는 자료구조.

ㄴ즉각적 데이터 검색과 업데이트 필요시.

== dictionary

데이터의 검색과 저장이 빠르게 진행.

>>hash(object) :: 파이썬 제공함수

hasy(“값”) % index_num > 인덱스 지정.

 

체이닝 - 인덱스 충돌시, 링크드 리스트로 해결.

개방 주소법(Open Adressing) - 인덱스 충돌시, 다음 칸에 넣는 걸로 해결.

 

Lamda 함수 <<?

더보기

TIP 알고리즘을 대하는 자세

꾸준,찾아보기,머리로만 ㄴ

 

공략법

1.배경지식

ㄴ기초적 프로그래밍 지식/수학적 지식

ㄴ부족시, 솔루션을 열었지만, 외게어

ㄴ가장 중요한 능력

 

2.구현력

ㄴ본인이 생각한 알고리즘을 소스코드로 구현하는 과정

ㄴ부족시, 코딩화 시키지 못하겠다. 뭘하는 지 모르곘다. 10줄이 넘어가면 엄두가 안난다.

ㄴ’내가 어떤 프로그램을 만들고자 하는지’ 명확하게

 

3.문제해결능력(응용력)

ㄴ 알고 있는 알고리즘, 자료구조, 테크닉 등을 당면한 문제에 맞게 변형하여 적용

ㄴ부족시 접근방법은 모르나 솔루션을 열었을 때 아는 알고리즘,자료구조

ㄴ중위권>상위권 벽을 뚫는 느낌으로 노력이 필요한 시점

 

코딩테스트 = 기초적인 배경지식+구현력

 

느낀것 :

더보기

알고리즘 풀이에 있어서 그냥 생각나는 규칙들을 차례 하면 되지 개념이 필요한가? 하고 생각했다가..

개념이라는 것은 단어를 알아야 비로소 느끼는 것을 표현할 수 있듯, 단어를 많이 아는 것은 표현과 사고를 확장 시켜주기 때문에, 길을 넓히기 위해 필요한 것이라 필요성을 인식.

다만, 수학 문제를 풀 때의 함수라 여겨지는데.... 굳이 함수가 필요한가 싶을 때도 있어 의아하지만 대화를 통해 같은 개념을 공유하는 사람에게 전하고자 하는 바를 전할 때에도 간결하게 전달할 수 있기 때문에 그에도 필요하다고 생각했다.

내게 아쉬웠던 것 : 

더보기

숙제들을 직접 풀어보겠노라 시간을 너무 소요한 것. 우선 부족한 배경지식 부터 쌓는 것이 가장  필요할 것 같다. 그 다음은 체화.

 

내일 할 일 :

더보기

4주차 마저 보고 알고리즘