본문 바로가기

BaekJoon125

11286 : 절댓값 힙 (C++) 11286번: 절댓값 힙 첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 그렇다고한다. #include #include using namespace std; vector heap; /* 왼쪽 자식의 인덱스 = 부모 인덱스 * 2 + 1 오른쪽 자식의 인덱스 = 부모 인덱스 * 2 + 2 부모 인덱스 = (자신 인덱스 - 1) / 2 */ void push(int data) { int i = heap.size(); heap.push_back(data); while(i != 0 && abs(heap[i]) = heap.. 2021. 2. 25.
5928 : Contest Timing (C++) 5928번: Contest Timing Bessie the cow is getting bored of the milk production industry, and wants to switch to an exciting new career in computing. To improve her coding skills, she decides to compete in the on-line USACO competitions. Since she notes that the contest starts on www.acmicpc.net 영어문제는 쉬운거부터 풀어야지 #include using namespace std; int main() { int D, H, M; cin >> D >> H >> M; // date, ho.. 2021. 2. 24.
2589 : 보물섬 (C++) 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 먼저 바다인 칸은 visit배열에 방문표시를 해놓고 접근하지 못하도록 한다. 칸을 한개씩 한개씩 검사하며 육지인칸이 나온다면 그 육지인 칸에서 BFS탐색을 실행하여 가장 긴 시간이 걸리는 길을 탐색하여 저장해서 결과값을 낸다. #include #include #include #include using namespace std; char map[50][50]; int map_search[50][50]; bool visit[50][50]; bool visit_searc.. 2021. 2. 24.
1927 : 최소 힙 (C++) 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 앞의 문제인 최대 힙과 반대되는 문제로 루트노드에 가장 작은 값이 위치해야 한다. #include #include using namespace std; /* 왼쪽 자식 노드 = 부모 노드 * 2 + 1 오른쪽 자식 노드 = 부모 노드 * 2 + 2 부모 노드 = 현재 노드 - 1 / 2 */ vector heap; void push(int data) { int i = heap.size(); heap.push_back(data); while(i.. 2021. 2. 24.
11279 : 최대 힙 (C++) 11279번: 최대 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 www.acmicpc.net 우선순위 큐를 공부하기 위해 최대 힙을 공부했다. clude #include using namespace std; vector v; /* 왼쪽 자식의 인덱스 = 부모 인덱스 * 2 + 1 오른쪽 자식의 인덱스 = 부모 인덱스 * 2 + 2 부모 인덱스 = 자신 인덱스 - 1 / 2 */ void push(int data) { int i = v.size(); v.push_back(data); while(i != 0 && v[i] > v[(i-1).. 2021. 2. 24.
2638 : 치즈 (C++) 2638번: 치즈 첫째 줄에는 모눈종이의 크기를 나타내는 두 개의 정수 N, M (5≤N, M≤100)이 주어진다. 그 다음 N개의 줄에는 모눈종이 위의 격자에 치즈가 있는 부분은 1로 표시되고, 치즈가 없는 부분은 0으로 표 www.acmicpc.net 놀랍게도 앞에 글과 이름은 같지만 번호는 다른 문제이다! 앞에 치즈 문제와는 다르게 이번 치즈문제는 공기와 접촉한 변이 2개 이상 일 때만 녹는다! 이에 초점을 맞추고 문제를 해결하였다. #include #include #include using namespace std; int N, M, hours; int counting = 1; int map[100][100]; bool visit[100][100]; int dx[4] = {1, -1, 0, 0};.. 2021. 2. 22.
2636 : 치즈 (C++) 2636번: 치즈 아래 과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(에서 네모 칸에 X친 부분)에는 치즈가 놓 www.acmicpc.net 치즈문제! BFS로 풀었다 먼저 BFS탐색을 통해 공기로 차있는 부분들을 방문표시한다. 정사각형 칸의 맨 가장자리에는 치즈가 놓이지 않는 것으로 가정한다고 했으므로 항상 map[0][0]부분은 공기 부분이므로 queue에 0,0을 넣고 공기인 부분을 탐색한 후 치즈를 녹인다. 치즈가 모두 남아있지 않을 때까지 계속 수행한다. 또한 치즈가 모두 녹기 한 시간 전에 남아있는 치즈조각이 놓여있는 칸의 수를 구하라 했으므로 치즈를 녹이기 전 항상 치즈조각이 남아있는 갯수를 세준 후 탐색을.. 2021. 2. 22.
14502 : 연구소 (C++) 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 6중 for문...! 을 사용해서 문제를 해결했다! 수영장에서 일하면서 문제를 어떻게 해결할지 생각하고 쉬는시간인 지금에 문제를 잘 풀었다. 못 풀것 같았는데 맞았습니다가 떠서 기분이 좋다 희희 #include #include #include using namespace std; int N, M; int maximum = 0; int map[8][8]; int temp[8][8]; bool visit[8][8]; int dx[4] = {1, -1, 0, 0}; int dy[4.. 2021. 2. 20.
13305 : 주유소 (C++) 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 그리디 알고리즘으로 해결한 문제이다. 처음에 조금 헷갈려서 문제를 이해하고 푸는데 좀 시간이 걸렸다. 반성하자. #include #define ll long long int using namespace std; // 거리와 가격이 최대 1,000,000,000이하로 // 들어옴으로 int로는 계산이 불가능 하다. ll total = 0; ll mini = 1000000001; int main() { int N; cin >> N; ll distance.. 2021. 2. 19.