Code/Algorithm 17

[정렬] 버블 정렬

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://www.youtube.com/watch?v=h2_Lc8a8Ffw&list=PLFgS-xIWwNVX-zm4m6suWC9d7Ua9z7fuT&index=14 정렬 알고리즘 정의 버블 bubble 데이터의 인접 요소끼리 비교하고, swap 연산을 수행하며 정렬하는 방식 선택 selection 대상에서 가장 크거나 작은 데이터를 찾아가 선택을 반복하면서 정렬하는 방식 삽입 insertion 대상을 선택해 정렬돈 영역에서 선택 데이터의 적절한 위치를 찾아 삽입하면서 정렬하는 방식 퀵 quick pivot 값을 선정해 해당 값을 기준으로 정렬하는 방식 병합 merge 이미 정렬된 부분 집합들을 효율적으로..

Code/Algorithm 2023.09.28

[자료구조] 스택과 큐

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://www.youtube.com/watch?v=JwOFYxirPPU&list=PLFgS-xIWwNVX-zm4m6suWC9d7Ua9z7fuT&index=12 스택 Last In First Out, LIFO, 후입선출 한 쪽에서만 삽입과 삭제가 이루어짐 top: 삽입과 삭제가 일어나는 위치, 가장 끝(위) s.append(data): top 위치에 새로운 데이터를 삽입하는 연산 s.pop(): top 위치에 현재 있는 데이터를 삭제&확인하는 연산 깊이 우선 탐색(DFS), 백트래킹 종류의 코딩 테스트에 효과적 개념 자체가 재귀 함수 알고리즘 원리와 일맥상통함 큐 First In First Out, ..

Code/Algorithm 2023.09.26

[Python] 백준 1253번 좋다

투 포인터를 활용한 문제 이 문제의 핵심은 본인을 제외했는가 인 것 같다. 예를 들어, 0 3 5 8 11이 주어졌을 때 답은 2(8, 11)이다. 그러나 본인을 제외하는 예외처리를 하지 않는다면, 0 + 3 = 3, 0 + 5 = 5 등 0이 카운팅 되어서 답안에 중복이 생긴다. 그렇기 때문에 if num[i] + num[j] == num[k] 안에서 if i != k and j != k를 통해 한 번 더 거르는 작업이 필요하다. # 좋다 # N개의 수 중 어떤 수가 다른 수 두 개의 합으로 나타낼 수 있으면 그 수를 '좋다'고 한다. # N개의 수 중 몇 개가 좋은 수인지 출력하시오. 수가 같아도 위치가 다르면 다른 수이다. # 첫째 줄에는 수의 개수 N, 둘째 줄에는 N개의 수가 주어진다. impo..

Code/Algorithm 2023.09.25

[자료구조] 구간 합

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/O514yiWg8YE?si=2U5WPE1m75BjhSHN 리스트 A가 있을 때 합 배열 S의 정의 : S[ i ] = A[ 0 ] + A[ 1 ] + A[ 2 ] + ... + A[ i - 1 ] + A[ i ] 합 배열 S를 만드는 공식 : S[ i ] = S[ i - 1 ] + A[ i ] A[ i ] ~ A[ j ] 구간 합을 구하는 공식 : S[ j ] - s [ i - 1 ] S[ j ] = A[0] + A[1] + ...+ A[ i - 1 ] + A[ i ] + ... + A[ j ] S[ i ] = A[0] + A[1] + ...+ A[ i - 1 ] + A[ i..

Code/Algorithm 2023.09.22

[자료구조] 배열과 리스트

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/_hP21RzyqHA?si=oMV1mj34PsWyGqXD 배열과 리스트는 자료구조와 파이썬에서 다른 의미로 사용된다. 우선 자료구조의 측면에서 살펴보자. 배열 메모리의 연속 공간에 값이 채워져 있는 형태의 자료구조 인덱스를 사용하여 값에 바로 접근할 수 있다. 새로운 값을 삽입하거나 특정 인덱스에 있는 값을 삭제하기 어렵다. 값을 삽입하거나 삭제하려면 해당 인덱스 주변에 있는 값을 이동시키는 과정이 필요하다. 배열의 크기는 선언할 때 지정할 수 있으며, 한 번 선언하면 크기를 늘리거나 줄일 수 없다. 구조가 간단하므로 코딩 테스트에서 많이 사용한다. 리스트 값과 포인터를 묶은..

Code/Algorithm 2023.09.21

[알고리즘] 논리 오류 탐색 방법, 디버깅

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/zX76zhUL7ks?si=yzqvIKobAd-XJRSL 코드에서 디버깅하고자 하는 줄에 중단점을 설정하고, IDE의 기능을 실행하면 된다. PyCharm에서는 Variables 기능을 활용하면 변숫값 추적도 가능하다. 실수하기 쉬운 4가지 오류 변수 초기화 오류 변수 초기화를 제대로 하지 않아 다른 값이 저장되어 있는 경우이다. 이전 테스트 케이스의 결과값이 저장되어 있기도 하다. 모든 변수가 정상적으로 초기화 되고 있는지 디버깅을 이용해 확인하면 문제 해결에 도움이 된다. 반복문에서 인덱스 범위 지정 오류 배열은 0 ~ 10,000까지 생성했는데 반복문에서 범위를 0 ~ ..

Code/Algorithm 2023.09.21

[알고리즘] 알고리즘 선택의 기준이 되는 시간 복잡도

Do it! 알고리즘 코딩 테스트 - 파이썬 편 (김종관) 책을 이용하여 알고리즘 공부 중입니다 😃 https://youtu.be/DYA2q0oX5CA?si=jHYk_9XMkehcbeIm 코딩 테스트의 핵심 중 하나는 주어진 시간 내에 문제를 해결하는 것 이를 위해선 시간 복잡도를 고려해야 한다. 파이썬은 일반적으로 초당 2,000만 번 ~ 1억 번의 연산을 수행한다. 시간 복잡도 유형 빅-오메가(Ω(n)): 최선일 때의 연산 횟수를 나타낸 표기법 빅-세타(θ(n)): 평균일 때의 연산 횟수를 나타낸 표기법 빅-오(O(n)): 최악일 때의 연산 횟수를 나타낸 표기법 코딩 테스트에선 최악인 경우를 기준으로 시간 복잡도를 계산하는 것이 좋다. 시간 복잡도는 데이터의 크기(N)에 따라 성능이 달라진다. 최악인..

Code/Algorithm 2023.09.21