본문 바로가기

알고리즘11

스택(Stack) 2 class element { int top=-1; public static final int MAX_STACK_SIZE=100; int stack[]=new int[MAX_STACK_SIZE]; public boolean is_empty() { return (top==-1); } public boolean is_full() { return (top==(this.MAX_STACK_SIZE-1)); } public void push(int item) { if(is_full()) { System.out.println("스택 포화 에러"); return ; } else stack[++top]=item; } public int pop() { if(is_empty(.. 2024. 8. 19.
연결 리스트 (linked list) 연결 리스트 (linked list)배열과 달리 각각의 요소가 포인터를 사용하면서 다음 요소의 위치를 가리킨다.포인터를 사용하여 자료를 연결하는 다른 자료구조에는 스택, 큐, 트리, 그래프 등이 있다.연결리스트는 메모리상 아무 곳에나 위치하는 자료들을 서로 연결하여 하나로 묶는 방법이다.C에서는 서로를 연결하는 줄을 포인터로 구현한다. 연결 리스트를 사용하면 중간에 자료를 추가하여야할때,배열은 추가하는 자리부터 한칸씩 밀어내면서 전부 수정해줘야하지만 연결리스트는 연결하던 줄(포인터)만 수정하면된다.삭제할때도 마찬가지로 줄(포인터)만 수정하면 된다.또한 연결 리스트는 데이터를 저장할 공간이 필요할 때마다 동적으로 공간을 만들어 쉽게 추가할 수 있다.그러나 배열에 비해 상대적으로 구현이 어렵고 오류가 나는것.. 2024. 7. 13.
최대값,최소값,중앙값 찾기 알고리즘 최대값,최소값 찾기 int max = a; if (b > max) max = b; if (c > max) max = c;3가지 숫자 중에서 최대값 찾기 int mIN = a; if (b 3가지 숫자 중에서 최소값 찾기4가지 숫자인 경우int max=a;if (b > max) max = b;if (c > max) max = c;if (d > max) max = d;숫자가 많아짐에따라 if문을 계속 만드는 것이 귀찮기 때문에 배열을 활용할 생각도 해볼 수 있다.#define _CRT_SECURE_NO_WARNINGS#include int main(void){ int a, b, c,d; printf("네 정수의 최댓값을 구합니다.\n"); printf.. 2024. 6. 25.
백준 10811번 배열 부분 역순 정렬 문제도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2번째 바구니, ..., 가장 오른쪽 바구니를 N번째 바구니라고 부른다. 도현이는 앞으로 M번 바구니의 순서를 역순으로 만들려고 한다. 도현이는 한 번 순서를 역순으로 바꿀 때, 순서를 역순으로 만들 범위를 정하고, 그 범위에 들어있는 바구니의 순서를 역순으로 만든다.바구니의 순서를 어떻게 바꿀지 주어졌을 때, M번 바구니의 순서를 역순으로 만든 다음, 바구니에 적혀있는 번호를 가장 왼쪽 바구니부터 출력하는 프로그램을 작성하시오.입력첫째 줄에 N (1 ≤ N ≤ 100)과 M (1 ≤ M ≤ 100)이 주어진다... 2024. 6. 23.
백준 3052번 배열 원소 서로 다른 값 찾기 문제두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.입력첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.출력첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. 우선적으로 생각할 수 있는것은 배열을 활용하여 해결할 수 있다.나머지를 배열의 원소로 저장하는 배열을 만들 생각을 하고 우선 입력값을 저장할 배열 (배열 A[10])을 만들었다.(코드를 간략화 하기 위해서는 이 .. 2024. 6. 21.
다익스트라 알고리즘 (Dijkstra Algorithm) 시작하는 정점으로 부터 최단 경로를 갖는 정점을 차례로 탐색하는 최단 경로 탐색 알고리즘 2024. 6. 6.