Linked List는 Array List 와는 달리, 요소와 요소 간의 연결(link)를 이용해서 구현한 리스트를 말한다. Linked List에서 가장 중요한 것은 "연결"이 무엇인가를 파악하는 것이다. 컴퓨터에는 3가지 중요한 부품이 있는데, CPU, 메모리 스토
현재 상황에서 지금 당장 좋은 것만 고르는 방법문제를 풀기 위한 최소한의 아이디어를 떠올릴 수 있는 능력 요구정당성 분석이 중요 - 단순히 가장 좋아 보이는 것을 반복적으로 최적해를 구할 수 있는지 검토해야 한다!탐욕법으로 얻은 해가 최적의 해가 되는 상황에서, 이를
머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정사실 모든 문제가 구현이라고 할수있지만 구현에 초점이 맞추어져 있거나 구현이 어려운 문제를 주로 구현 유형이라고 한다!대표유형풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제알고리즘은 간단한데 코드가 지나칠 만큼
먼저 들어 온 데이터가 나중에 나가는 형식의 자료구조입구와 출구가 동일한 형태로 시각화예시: 박스 쌓기, 접시 쌓기삽입, 삭제 두 연산으로 구성됨삽입 : 맨 끝에 추가삭제 : 맨 끝 원소 삭제파이썬 - 단순 리스트를 사용하면 된다.append() : 리스트 오른쪽에 요
코드의 실행 시간이 오래 걸리는 이유는? 연산량! 계산량은 '입력'과 관련이 있다. 더하기 연산 n번 + 반복문 n번 = 2n 연산에 따라 속도는 각각 다름모든 연산을 Counting할 수는 없음최악의 경우와 최선의 경우실행시간이 달라질 수 있음 - 컴퓨터, 서버의
1629번: 곱셈일반적으로 생각할 수 있는 a\*\*b%c 로 푼다면 시간초과가 뜬다. 분할 정복을 이용해서 연산의 수를 줄여준다. 참고) a\*\*b%c 는 (a%c)\*\*b%c 와 같다. 따라서 중간중간 c를 사용해 나머지를 구한 후 곱해도 결과는 같다. a, b
최솟값을 찾아 자리를 바꿔나가는 것 최악의 경우 시간복잡도가 O(n\*\*2)최솟값 찾기 n 번 + 비교 1 + 2+ 3+ .... + n-1 번 = (n2+n)/2 → O(n2) 최악의 경우 시간복잡도가 O(n\*\*2)앞뒤를 비교하면서 작은 것은 앞, 큰 것은 뒤