본문 바로가기

Algorithm

(203)
[BOJ] 20055번 컨베이어 벨트 위의 로봇 (C++) [삼성 SW 역량테스트 기출] https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net #include #include using namespace std; int n, k; deque dq; int answer; int main() { cin >> n >> k; for(int i = 0; i > x; dq.push_back({x, false}); } while(true){ answer++; // 1 int t1 ..
[BOJ] 1781번 컵라면 (C++) https://www.acmicpc.net/problem/1781 1781번: 컵라면 상욱 조교는 동호에게 N개의 문제를 주고서, 각각의 문제를 풀었을 때 컵라면을 몇 개 줄 것인지 제시 하였다. 하지만 동호의 찌를듯한 자신감에 소심한 상욱 조교는 각각의 문제에 대해 데드라 www.acmicpc.net #include #include using namespace std; struct cmp{ bool operator()(pair&a, pair&b){ if(a.first == b.first){ return a.second b.first; } } }; int main() { ios::sync_with_stdio(false); cin.tie(N..
[BOJ] 15565번 귀여운 라이언 (C++) https://www.acmicpc.net/problem/15565 15565번: 귀여운 라이언 꿀귀 라이언 인형과, 마찬가지로 꿀귀인 어피치 인형이 N개 일렬로 놓여 있다. 라이언 인형은 1, 어피치 인형은 2로 표현하자. 라이언 인형이 K개 이상 있는 가장 작은 연속된 인형들의 집합의 www.acmicpc.net #include #include #include using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n, k; cin >> n >> k; vector rion_position; for(int i = 1; i > x; if(x == 1) rion_position.push_back(i); } if(ri..
[BOJ] 1068번 트리 (C++) https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net #include #include using namespace std; vector tree[50]; int n, k, root; int leafcnt = 0; int dfs(int node){ if(node == k) return -1; if(tree[node].size() == 0){ leafcnt++; return 0; } for(int i = 0; i < tree[node].size()..
[BOJ] 18429번 근손실(C++) https://www.acmicpc.net/problem/18429 18429번: 근손실 웨이트 트레이닝을 좋아하는 어떤 대학원생은, 현재 3대 운동 중량 500의 괴력을 소유하고 있다. 다만, 하루가 지날 때마다 중량이 K만큼 감소한다. 예를 들어 K=4일 때, 3일이 지나면 중량이 488로 www.acmicpc.net #include using namespace std; int n, k; int gain[8]; bool visited[8]; int weight = 500; int answer = 0; void dfs(int count){ if(count == n) answer++; else{ for(int i = 0; i < n; i++){ if(!visited[i]){ visited[i] = tru..
[BOJ] 2263번 트리의 순회 (C++) https://www.acmicpc.net/problem/2263 2263번: 트리의 순회 첫째 줄에 n(1 ≤ n ≤ 100,000)이 주어진다. 다음 줄에는 인오더를 나타내는 n개의 자연수가 주어지고, 그 다음 줄에는 같은 식으로 포스트오더가 주어진다. www.acmicpc.net #include using namespace std; int Index[100001]; int inOrder[100001]; int postOrder[100001]; void getPreOrder(int inStart, int inEnd, int postStart, int postEnd){ if(inStart > inEnd || postStart > postEnd) return; int rootIndex = Index[po..
[BOJ] 11725번 트리의 부모 찾기 (C++) https://www.acmicpc.net/problem/11725 11725번: 트리의 부모 찾기 루트 없는 트리가 주어진다. 이때, 트리의 루트를 1이라고 정했을 때, 각 노드의 부모를 구하는 프로그램을 작성하시오. www.acmicpc.net #include #include #include using namespace std; int parent[100001]; bool visited[100001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector node[100001]; for(int i = 0; i > x >> y; node[x].push_back..
[BOJ] 1761번 정점들의 거리 (C++) https://www.acmicpc.net/problem/1761 1761번: 정점들의 거리 첫째 줄에 노드의 개수 N이 입력되고 다음 N-1개의 줄에 트리 상에 연결된 두 점과 거리를 입력받는다. 그 다음 줄에 M이 주어지고, 다음 M개의 줄에 거리를 알고 싶은 노드 쌍이 한 줄에 한 쌍씩 www.acmicpc.net #include #include #include using namespace std; int parent[40001]; int depth[40001]; int length[40001]; bool visited[40001]; int main() { ios::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector node[40001];..