본문 바로가기

Algorithm/알고리즘 공부노트24

2. Array(배열) - Bubble Sort(버블정렬) 1. 버블정렬 - 가장 직관적이지만, 사용을 추천하지 않는 정렬 알고리즘 a) 버블이란? - 배열의 2개 요소를 묶은 단위를 의미한다. b) 버블 스왑(swap)이란? - 버블로 묶인 배열 요소 2개의 index 값을 서로 바꾸는 것을 말한다. array[1], array[2] = array[2], array[1] 2. 버블정렬의 동작방식 - 버블정렬은 배열의 요소를 정리하는 정렬 알고리즘 중 하나다. - 배열의 요소를 2개씩 비교해서, 서로의 위치(index)를 교환(swap)하여 정리하는 방식이다. a) 예제를 통한 버블정렬의 이해 - 위의 예제는 오름차순으로 배열의 요소를 정리하는 버블정렬이다. - 요소 2개씩 비교를 진행한다. - 요소의 크기를 비교하여 작은 수를 앞으로, 큰수를 뒤로 가도록 위치.. 2021. 8. 21.
1. Array(배열) - 기본 개념 1. Array(배열) - 배열은 가장 기본적이면서, 많이 사용되는 자료구조다. a) 배열의 형태 - 배열은 동일한 자료형을 가진 데이터의 연속적인 나열로 이루어져 있다. - 배열의 요소는 연속적인 메모리 주소를 할당받는다. - 배열은 index를 사용하여 해당 요소의 메모리에 직접 접근이 가능하다. b) 배열은 정렬(Sorting)과 이어진다. - 정렬에는 다양한 알고리즘이 있는데, 배열을 효율적으로 사용하기 위함이다. - 대부분의 정렬 알고리즘은 O(n log n)의 시간복잡도를 갖는다. - 정렬 알고리즘은 안정적(stable)인가, 불안정적(unstable)인가로 분류된다. c) 배열은 탐색(Search)과 이어진다. - 배열을 이용한 알고리즘 문제를 풀다보면, 배열의 특정 요소를 찾는 경우가 있다.. 2021. 8. 20.
파이썬 - filter와 lambda, map 사용방법 1. filter() 와 lambda, map() a) filter() 와 lambda - filter() 함수는 특정 조건에 걸러진 요소들을 iterator 객체로 만들어 반환한다. - 즉, list, set, tuple에 담아야 사용 및 출력할 수 있다는 것이다. - 여기서 특정 조건은 적용시킬 함수를 의미한다. 그래서 lambda를 많이 사용한다. - lambda는 다음과 같은 형태로 구성된다. lambda 인자 : 표현식 - 만약 a, b 두 수의 합을 반환하는 함수를 작성한다면 다음과 같이 작성할 수 있다. def plus(a, b): return a + b plus(10, 10) # 20을 반환한다. - 이를 람다로는 다음과 같이 작성할 수 있다. result = (lambda a, b : a.. 2021. 8. 6.
시간복잡도 완전정복(1) 0. 시작에 앞서 요즘 백준을 통해 알고리즘 문제를 열심히 풀고있다. 문제를 작성하면 내 코드가 다른 사람들의 코드보다 10ms 정도 더 걸리는 경우도 있고, 올바른 답은 나오지만 시간초과로 인해서 문제를 틀리는 경우가 있다. 이럴 때 내 코드가 어떤 시간복잡도를 갖고 있는지를 계산한다면, 개선점을 확인할 수 있을 거라고 생각했다. 그래서 이번 포스팅은 시간 복잡도를 계산하는 방법에 대해서 완전 정복을 해보려고 한다. 1. Big - O 표기법 a) 기본 개념 - 입력값에 따른 알고리즘의 사용량을 예측하는 방법이다. - 더 자세한 설명을 원한다면, 아래의 링크를 참고하기를 바란다. https://devraphy.tistory.com/40 Data Structure - 시간 복잡도(Time Complexi.. 2021. 8. 4.
파이썬 배열 - 개념 및 메소드 정리 1. 파이썬의 배열은 리스트다. 파이썬의 배열은 배열이 아니라 리스트이다. 왜 그럴까? 같이 알아보자. a) 파이썬의 배열은 배열의 특징을 갖지 않는다. 컴퓨터 공학의 측면에서 보면 '배열'은 고정된 크기를 갖는다. 그리고 배열의 요소는 모두 동일한 크기를 갖는다는 특징이 있다. 하지만, 파이썬의 배열은 고정된 크기를 갖지 않는다. 이는 '리스트'의 특징이다. b) Dynamic Array 컴퓨터 공학에서 리스트는 index가 아니라 pointer를 사용한다. 포인터는 다음 요소의 값을 가리키는 주소값을 담고 있는 변수다. 이를 메모리 관점에서 보면, 리스트의 요소들은 연속적인 메모리 주소값을 할당받는게 아니라(이는 배열의 특징이다.) 메모리의 여기 저기의 주소값을 할당받아 그 위치에 값이 저장되는 구조.. 2021. 7. 30.
입출력과 사칙연산 메소드 정리 1. 단계별 풀이 https://www.acmicpc.net/step 단계별로 풀어보기 단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을 www.acmicpc.net 대기업 코딩테스트를 준비하기 시작한 시점에서 백준의 단계별 풀이를 차근차근 풀어나가려고 합니다. 정말 쉬운 문제푸터 중/고급 정렬문제 까지 단계별로 잘 나뉘어 있습니다. 2. 많이 쓰는 메소드 1. map() - map()은 입력값을 특정 자료형으로 변경하여 받기 위해 사용한다. - 만약 입력값을 정수형으로 받고 싶다면 다음과 같이 사용할 수 있다. userInput = m.. 2021. 7. 26.