분류 전체보기 275

정렬 - 연속된 데이터를 기준에 따라서 정렬하기 위한 알고리즘

정렬(Sorting)이란 ? : 데이터를 측정한 기준에 따라서 순서대로 나열하는 것으로, 프로그램을 작성할 때 가장 많이 사용되는 알고리즘 중 하나다. 정렬 알고리즘은 굉장히 다양한데, 이 중에서 많이 사용하는 정렬은 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬 등이 있다. 정렬 알고리즘을 잘 공부하면, 알고리즘의 효율을 높일 수 있다. 또한, 코딩 테스트에서의 정렬 알고리즘 문제는 어느 정도 정해진 답이 있어서, 외워서 잘 풀어낼 수 있는 문제라고도 할 수 있다. 오름차순을 기준으로 각 정렬을 살펴보자. 선택 정렬(Selection Sort) : 데이터가 무작위로 있을 때, 그 중 가장 작은 값을 선택해 맨 앞에 있는 값과 바꾸고, 그 다음 작은 값을 선택해 앞에서 두 번째 값과 바꾸는 과정을 계속 ..

DFS/BFS - 그래프를 탐색하기 위한 알고리즘

먼저, 꼭 필요한 자료구조의 기초에 대해 살펴보자. '탐색'이란 많은 양의 데이터 중에서 원하는 데이터를 찾는 과정 으로 그래프, 트리 등의 자료구조 안에서 탐색을 하는 문제를 자주 다룬다. 대표적인 탐색 알고리즘으로 DFS와 BFS 가 있는데, 이를 제대로 이해하려면, 먼저 스택과 큐에 대한 이해가 선수되어야 한다. 먼저, 스택(stack)을 살펴보자. 스택은 양동이에 물체를 넣는다고 생각하면 된다. 이러한 구조를 선입 후출(First In Last Out) 또는 후입 선출(Last In First Out),LIFO 구조라고 한다. 구조를 그림으로 그려보면 아래와 같다. 이를 파이썬 코드로 표현한다면, stack = [] # 삽입(5) - 삽입(2) - 삽입(3) - 삭제() - 삽입(1) - 삽입(7..

파이썬 기본_1

파이썬에 대해 우리는 파이썬 3.x 버전을 사용한다. 파이썬 3버전에서의 문법을 숙지하자. 출력 - 가장 먼저 출력을 하기 위해, 컴퓨터에 명령을 해야하는데, 해당 명령을 파이썬에서는 print() 로 한다. (ex) print('문자/문자열') print(3) 연산 - 연산 몫연산/ 나머지 연산 / 나누기 연산 (ex) print(15//4) 처럼 슬래쉬를 2개 쓰면 몫연산이다. 예시의 출력은 3이 나오겠다 (ex) print(15%4)처럼 %는 modular 연산 (나머지 연산)이라고 하는데, 나머지를 출력한다. 예시의 출력은 3이 나오겠다. (ex) print(15/4) 처럼 /는 나누기 연산이다. 출력 결과는 소수점이 나온다. 변수,데이터 타입 - 변수는 데이터를 할당하는 것으로, 데이터 타입으로..

구현

구현(Implementation)이란 ? : 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정으로, 어떤 문제를 풀든 간에 소스코드를 작성하는 과정은 필수이므로 구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다. 우리는 알고리즘 문제를 해결할 때, 문제를 읽고 문제 풀이 방법을 고민한다. 이 때, '구현' 유형이란 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 의미한다. 흔히들, 프로그래밍 언어의 문법에 능숙하고 코드 작성 속도가 빠른 것을 피지컬이 좋다라고 얘기하는데, 구현 문제에서는 이런 피지컬을 요구하기도 한다. 실제 코딩 테스트에서 구현 문제를 만나면 당황할 수 있다. 어떻게 풀지 감은 오는데, 쉽게 코드로 옮겨지지는 않기 때문이다. 프로그래밍 문법을 정확하게 ..

그리디(Greedy)

그리디(Greedy) 알고리즘 : 욕심쟁이 알고리즘이라고도 하는 탐욕 알고리즘은 단순하지만 강력한 문제 해결법이다. 여기서 탐욕적이라는 말은 '현재 상황에서 지금 당장 좋은 것만 고르는 방법'을 의미한다. 그리디 알고리즘은 매 순간 가장 좋아보이는 것을 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다. 그리디 알고리즘은 기준에 따라 가장 좋은 것을 선택하는 알고리즘으로, 문제에서 '가장 큰 순서대로' 혹은 '가장 작은 순서대로' 와 같은 기준을 문제에서 알게 모르게 제공해준다. 정렬 알고리즘을 사용했을 때, 효과적으로 풀 수 있어, 보통 정렬 알고리즘과 짝을 이루어 출제되곤 한다. 대표적인 그리디 알고리즘 예제 - 1) 동전 거스름돈 문제 import sys input = sys.s..

반응형