본문 바로가기

알고리즘8

백준 3015번: 오아시스 재결합 C++ 문제 해결 오늘은 백준에서 스택 문제 중 오아시스 재결합에 대해서 설명해보겠습니다. 먼저 이 문제는 복잡한 알고리즘을 필요로 하지는 않습니다. 제가 해결한 방법은 2493번: 탑 문제를 보고 오시면 쉽게 이해하실 수 있을 것 같습니다. 간단히 설명드리면스택에 pair를 이용해 키와 키가 같은 사람의 수를 푸시입력된 숫자와 앞에 선 사람의 키를 비교할 때 작은 숫자가 입력된 것이 아니면 기존 정보 삭제(작은 숫자가 입력되면 더 이전 숫자는 마주 볼 수 없음)앞에 선 사람보다 키가 크거나 같으면 카운트 증가, 같을 경우에는 키가 같은 것을 나타내는 변수를 더해 스택에 푸시좀 이해하기 어려울 수 있으니 코드를 분석 해보겠습니다.#include #include #define height first#define equal .. 2024. 11. 24.
선택 정렬 정렬 다음 숫자들을 오름차순 정렬하시오 > 1 10 5 8 7 6 4 3 2 9 사람이라면 쓱 보고 순서대로 쓰겠지만 컴퓨터는 그게 가능하지 않다 그러기에 알고리즘을 정의해주어야 한다 선택정렬 가장 작은 것을 선택해 가장 앞으로 보내는 알고리즘을 생각해본다면 이것은 선택정렬이라고 할 수 있다. 가장 원시적이고 기초적인 알고리즘이다 #include using namespace std; int main() { int min,index,temp; int arr[10] = {1,10,5,8,7,6,4,3,2,9}; for(int i=0; i 2024. 2. 18.
버블 정렬 다음 숫자들을 오름차순 정렬하시오 >1 10 5 8 7 6 4 3 2 9 버블정렬 옆에 있는 값과 비교하여 작은 수를 앞으로 보내는 정렬 방법을 버블 정렬이라고 한다. 구현은 가장 쉽지만 가장 비효율적이라 할 수 있다. #include using namespace std; int main() { int min,index,temp; int arr[10] = {1,10,5,8,7,6,4,3,2,9}; for(int i=0; i 2024. 2. 18.
삽입 정 다음 숫자들을 오름차순 정렬하시오 > 1 10 5 8 7 6 4 3 2 9 삽입 정렬 필요한 경우에만 위치를 바꾸어 정렬하는 삽입 정렬에 대해 알아볼 것이다. 비교적 느리지만 조금은 복잡한 구조이다. #include using namespace std; int main() { int j,temp; int arr[10] = {1,10,5,8,7,6,4,3,2,9}; for(int i=0; iarr[j+1]){ temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; j--; } } for(int i=0; i 2024. 2. 18.