본문 바로가기

분류 전체보기

(60)
삽입 정렬(Insertion Sort) (C++) 삽입 정렬은 적절한 위치에 삽입는 정렬이다. 앞에서부터 두 숫자를 비교하면서 정렬하고 정렬된 숫자에서 알맞는 자리를 찾아 숫자를 삽입하는 정렬이다. 자리를 찾아가는 방법은 바로 앞 숫자와 비교하여 자기보다 작은 숫자가 나올때까지 자리를 바꿔가는 것이다. 조심해야할 것은 j가 0보다 작아지지않게 j-1 과 j가 아니라 j 와 j+1을 비교하는 것이고, while 문 안에서 j>=0조건을 달아주고 j--를 하는 것은 생각해내기 쉽지 않았을 것 같다. #include using namespace std; int main(){ int i, j,tmp; int array[10]={1,10,5,8,7,6,4,3,2,9}; for(int i=0;i=0 && array[j]>array[j+1]){ tmp=array[j..
선택 정렬(Selection Sort) (C++) 선택정렬은 가장 작은 숫자를 가장 앞으로 보내는, 가장 앞에 있는 숫자와 자리를 바꾸어 오름차순으로 만드는 정렬이다. 처음에 했던 실수는 변수 min에 가장 작은 숫자가 들어가고 반복할때마다 그 다음으로 작은 숫자가 들어가기때문에 min을 큰 수로 매번 대입을 해줘야하는데 처음에만 대입을 해서 제대로 작동하지 않았다. #include using namespace std; int main(){ int i, j, min, index, tmp; int array[10]={1,10,5,8,7,6,4,3,2,9}; for(int i=0;i
버블 정렬(Bubble Sort) (C++) 버블 정렬은 바로 옆의 수와 비교하여 오름차순으로 정렬하는 알고리즘이다. 진행할수록 가장 큰 숫자가 맨 뒤에 자리하게 되고, 그렇기 때문에 진행되면서 맨 뒤 숫자를 빼고 비교를 하게되어 비교하는 횟수가 하나씩 줄어들게 된다. 시간복잡도는 O(N^2)로 가장 안좋다고 한다. #include using namespace std; int main(){ int i,j,tmp; int array[10]={1,10,5,8,7,6,4,3,2,9}; for(int i=0;i
다시 풀어보기**백준 2178번 미로 탐색(C++) www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 1. 처음에는 입력받는 것부터 헤맸다. 붙어있는 숫자에서 하나씩 입력받는 건 "%1d" 를 쓰면된다. 2. 좌표 문제가 나오면 struct를 써주면 편할 것 같다. 3. bfs는 queue와 노드 방문 여부를 사용한다는 것. 4. 방문 여부를 for문 안에 넣었을 때는 메모리초과가 떴는데 밖으로 빼니까 통과했다. #include #include using namespace std; struct Edge{ int x, y,cost; Edge(i..
**백준 1260번 DFS와 BFS(C++) https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net #include #include #include #include #include using namespace std; void dfs(int start, vector graph[], bool check[]){ if(!check[start]){ check[start]=true; cout
**백준 1946번 신입 사원(C++) https://www.acmicpc.net/problem/1946 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 아이디어는 우선 서류등수에 따라 정렬하고 서류등수 1등부터 아래로 내려가면서 면접등수를 비교한다. 서류등수 1등의 면접등수보다 면접등수가 앞인 사람을 채용하고 그 등수를 기준 등수로 바꾸면서 진행한다. #include #include using namespace std; struct Rank{ int s; int m; }; bool compare(Rank &r1, Rank &..
백준 2839번 설탕 배달(C++) https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net #include int main() { int n,rest,tot=0; scanf("%d",&n); rest=n; while(1){ if(rest==0) break; //설탕이 알맞게 나누어지면 while문 탈출 if(rest
1081 : [기초-종합] 주사위를 2개 던지면? #include using namespace std; int main() { int a,b; scanf("%d%d",&a,&b); for(int i=1;i