목록분류 전체보기 (44)
거북이의 IT 공부
문제 https://www.acmicpc.net/problem/15652 15652번: N과 M (4) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 나의 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include #include #define MAX 8 using namespace std; int arr[MAX]; //수열 숫자 vector vec; //수열 b..
문제 https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 나의 코드 저번시간에는 재귀를 통한 '순열 구현'을 배웠다면 이번시간에는 재귀를 통한 '조합 구현'이다. ** 참고 사이트 : https://yabmoons.tistory.com/99 [ 순열과 조합 구현 ] - 재귀를 통한 구현(1 - 조합) (C++) 브루트포스 알고리즘에서 가장 많이 사용되는 방법이 순열과 조합등으로 모든 경우의 수를 모두 계산해본 뒤에 원하는 결과 값을 찾는 방식이다..
문제 https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 백트래킹이란? 아래에 정리해 두었다! https://bunnnybin.tistory.com/entry/%EB%B0%B1%ED%8A%B8%EB%9E%98%ED%82%B9-Backtracking-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98%EC%9D%B4%EB%9E%80 백트래킹 (Backtracking) 알고리즘이란? 백트래킹이란? 해를 찾아가는 도중, 지금의 경로가 해..
문제 https://www.acmicpc.net/problem/2583 2583번: 영역 구하기 첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오 www.acmicpc.net 나의 코드 bfs 코드를 많이 풀었지 dfs는 푼 경험이 없는 것 같아서 dfs로 풀어보았다. 앞으로 배울 백트래킹 알고리즘에 도움이 되기 위해! dfs에서 주의할 점은 일단 인접한 노드는 방문표시를 하고 스택에 집어넣는다. 그래야지 방문한 인접 노드를 또 방문하는 패해를 없앤다. 물론 스택에서 나온 현재 보는 노드가 이미 방문 표시가 되었음을 인지하자. 그러나 dfs는 ..
우선순위 큐란? 기존 큐는 넣은 순서대로 빠지는 반면, 우선순위 큐는 넣는 것은 동일하지만 빠지는 건 최소 또는 최대부터 빠진다. 여기서 최대부터 빠지는 걸 Max Heap이라 칭하고, 최소부터 빠지는 걸 Min Heap이라고 칭한다. 우선순위 큐의 작동원리 Max Heap과 Min Heap은 자료구조 시간에 배운 기억이 난다. 다음 그림을 보면 더 생각이 잘 날것이다. 우선순위 큐는 자료구조 상 배열, 연결리스트, 힙으로 구현이 가능하다.(따라서 백터와 덱 컨테이너와 붙어서 사용이 가능하다 - 리스트 불가능) 내부적으로 에 있는 힙 관련 함수들을 사용하여 구현되어있다. 내부구조는 default로 vector container 기반으로 설정되어 있다. 정렬기준 default는 내림차순(less) 기반으로..
문제 https://www.acmicpc.net/problem/13549 13549번: 숨바꼭질 3 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 www.acmicpc.net 나의 코드 - 틀렸다 #include #include using namespace std; queue q; // 현재 위치,..
문제 https://www.acmicpc.net/problem/13913 13913번: 숨바꼭질 4 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 www.acmicpc.net 나의 코드 - 시간초과 #include #include #include #include using namespace std;..
문제 https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 www.acmicpc.net 딱 보았을 때 bfs 문제가 아닌 줄 알았다. 뜬끔없이 경우의 수를 일일이 다 계산해야 하는 생각이 들었다. 하지만 결국 도착지점에 ..