본문 바로가기
728x90
반응형

전체 글148

[Python] SWEA 5097 회전 이번 포스팅에서 다룰 SW Expert Academy SWEA 5097 회전 문제는 N개의 숫자로 이루어진 수열의 맨 앞의 숫자를 맨 뒤로 보내는 작업을 M번 했을 때, 수열의 맨 앞에 있는 숫자를 출력하는 문제이다. queue 큐 자료구조에 관한 문제로 난이도는 D2이다. 출처: https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg SW Expert Academy 5097 회전 문제 정보 자료구조 분류 - 큐 Queue 난이도 - D2 회전 문제 요약 10억 이하의 자연수 N개로 이루어진 수열이 주어진다. (3≤N≤20) 맨 앞의 숫자를 맨 뒤로 보내.. 2021. 8. 8.
[Python] SWEA 4880 토너먼트 카드게임 SW Expert Academy SWEA 4880 토너먼트 카드게임 문제는 N명의 학생이 가위바위보가 그려진 카드를 나눠갖고, 전체를 두 개의 그룹으로 나누고, 그룹의 승자끼리 카드를 비교해서 토너먼트로 최종 승자를 가리는 문제이다. 분할 정복 알고리즘에 관한 문제로 난이도는 D2다. 출처: https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do SW Expert Academy 4880 토너먼트 카드게임 문제 정보 알고리즘 분류 - 분할 정복 알고리즘 Divide and Conquer 난이도 - D2 토너먼트 카드게임 문제 요약 1번부터 N번까지 N명의 학생이 N장의 카드를 나눠 갖는다. (4≤N≤100) 전체를 두 개의 그룹으로 나누.. 2021. 8. 5.
[Python] SWEA 4874 Forth SWEA 파이썬 문제 해결 SW Expert Academy 4874 Forth 문제는 스택 연산을 기반으로 하고 있어서 후위 표기법을 사용하는 Forth라는 컴퓨터 언어의 코드 연산 결과를 출력하는 문제이다. 자료구조 스택을 활용한 계산기 프로그램에 관한 문제로 난이도는 D2이다. SW Expert Academy 4874번 Forth 문제 정보 자료구조 분류 - Stack 난이도 - D2 Forth 문제 요약 Forth 언어는 후위 표기법을 사용한다. ex) 3+4 → 3 4 + . Forth에서의 동작은 아래와 같다. 1. 숫자는 스택에 넣는다. 2. 연산자를 만나면 스택의 숫자 두 개를 꺼내어 연산하고 결과를 다시 스택에 넣는다. 3. '.'은 스택에서 숫자를 꺼내 출력한다. Forth 코드의 연산 .. 2021. 8. 3.
[알고리즘] DFS 깊이 우선 탐색 이번 포스팅에서 다룰 내용은 그래프 탐색 기법 DFS, BFS 중 하나인 깊이 우선 탐색 DFS 알고리즘입니다. 스택이나 재귀 함수를 사용해 구현됩니다. DFS 개념, 탐색 과정, 시간 복잡도, 장단점, 깊이 우선 탐색 알고리즘 파이썬 구현 방법 2가지, 예제까지 알아보겠습니다. DFS (Depth First Search) 시작 노드부터 다음 분기로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 그래프 탐색 방법입니다. 한 방향으로 경로를 탐색하다가 더 이상 갈 수 없으면 다른 방향으로 탐색을 진행합니다. Stack이나 재귀 함수(Recursive function)로 구현됩니다. DFS(깊이 우선 탐색) 방법 1. 시작 정점에서 한 방향으로 갈 수 있는 경로가 있는 곳까지 깊이 탐색합니다. 2. 더 이상 .. 2021. 8. 2.
(Brute Force) 브루트포스 알고리즘 - 문자열 패턴 매칭 포스팅에서 다룰 브루트 포스 Brute Force 알고리즘은 비교 대상 문자열을 처음부터 끝까지 모두 순회하면서 비교하기 때문에 고지식한 알고리즘이라고도 불리는 문자열 패턴 매칭 알고리즘입니다. Brute Force 시간 복잡도, 장단점, 알고리즘 파이썬 구현에 대해 알아보겠습니다. 브루트 포스란? (Brute Force) 검색 대상이 되는 원본 문자열의 처음부터 끝까지 차례대로 순회하며 문자들을 일일이 비교하는 방식의 고지식한 알고리즘입니다. 비교하고자 하는 문자열과 패턴을 한 칸씩 이동하면서 비교하여 일치 여부를 확인합니다. Brute Force 비교 과정 T: 원본 문자열 / P: 찾고자 하는 문자열 패턴 T, P 모두 첫 문자부터 비교를 시작하므로 검색 인덱스를 맨 처음 인덱스로 설정합니다. 각각.. 2021. 8. 2.
(Boyer Moore) 보이어 무어 알고리즘 - 문자열 패턴 매칭 이번 포스팅에서 다룰 보이어 무어 Boyer Moore 알고리즘은 패턴 문자열의 오른쪽에서 왼쪽으로 비교하고, 불일치할 경우 정해진 이동거리만큼 점프해가며 비교하는 문자열 패턴 매칭 알고리즘입니다. 보이어 무어 알고리즘 시간 복잡도, 장단점, 파이썬 예제에 대해 알아보겠습니다. 보이어 무어 알고리즘이란? (Boyer Moore) 패턴 문자열의 오른쪽 끝 부분에서부터 왼쪽 앞부분 방향으로 문자를 비교하는 방식입니다. 보통 상황에서 문자열 앞부분보다 뒷부분이 불일치가 일어날 확률이 높다는 성질을 이용한 알고리즘입니다. 패턴 문자열에 대한 이동거리 skip 테이블을 만들어놓고 적절한 이동 거리만큼 점프해가며 비교합니다. Boyer Moore 비교 과정 찾을 패턴 : bye 탐색할 문자열 : heyhibye 1.. 2021. 8. 1.
선택 정렬(Selection Sort), 셀렉션 알고리즘 이번 포스팅에서 다룰 주제인 선택 정렬(Selection Sort)은 최솟값을 선택하여 위치를 교환하여 정렬하는 방법으로 셀렉션 알고리즘을 적용한 방식입니다. 선택 정렬 예제, 시간 복잡도, 장단점, 셀렉션 알고리즘, 선택 정렬 알고리즘 파이썬 구현에 대해 알아보겠습니다. 선택 정렬이란? (Selection Sort) 가장 작은 값의 원소부터 차례로 선택하여 위치를 교환하여 정렬하는 방법입니다. 셀렉션 알고리즘을 전체 자료에 적용한 것입니다. 셀렉션 알고리즘이란? (Selection Algorithm) 자료들 중 k번째로 크거나 작은 원소를 찾는 방법으로 최솟값, 최댓값, 중간값 등을 찾을 때 사용하기도 합니다. 정렬 알고리즘을 이용하여 자료를 정렬하고, 원하는 순서에 있는 원소를 가져오는 과정을 거칩니.. 2021. 8. 1.
카운팅 정렬 알고리즘 (Counting Sort / 계수 정렬) 포스팅에서 다룰 계수 정렬이라고도 하는 카운팅 정렬(Counting Sort)은 각 항목의 개수를 세어 저장해 두고, 그에 따라서 적절한 위치에 정렬하는 효율적인 알고리즘입니다. 오름, 내림차순 정렬 과정, 시간 복잡도, 장단점, 카운팅 정렬 파이썬 알고리즘 구현에 대해 알아보겠습니다. 카운팅 정렬이란? (Counting Sort) 항목들의 순서를 결정하기 위해 집합에 각 항목이 몇 개씩 있는지 세어서 적절한 위치에 선형 시간에 정렬하는 방법입니다. 각 항목의 개수를 기록하기 위해 정수로 인덱스 되는 카운트 리스트를 사용하기 때문에 정수나 정수로 표현할 수 있는 자료에만 적용할 수 있는 정렬 알고리즘입니다. 카운트 리스트를 위한 충분한 공간을 할당하려면 집합 내의 가장 큰 정수를 알아야 합니다. 카운팅 .. 2021. 7. 31.
728x90
반응형