목록전체 글 (245)
말랑한 하루
[문제] [조건] [해결방법] 1. 슬라이딩윈도우 덱을 오름차순으로 유지하며 소스코드를 진행하면된다. ㅡ덱의 처음이 지정된범위를 벗어난경우 제거해주는것 ㅡ덱의 마지막을 내가 덱에 추가하고자하는 값이 최대가 되도록 유지시켜주는것 2. 세그먼트 트리 [전체소스코드] 1. 슬라이딩 윈도우 #include #include #include #pragma warning(disable:4996) using namespace std; #define fs first #define se second deque q; int ary[5000001]; int main() { int test, L; cin >> test >> L; for (int i = 0; i > ary[i]; for (int ..
[문제] 간단한 BFS문제입니다. [조건] 가로, 세로, 대각선으로 연결되어 있는 섬의 전체개수를 찾는것 맵을 벗어나지않게 움직이며, 같은색의 섬만 움직일 수 있도록 판별하는것. [해결순서] 가로, 세로, 대각선에대해 움직일수 있는 방법을 파악하는 것이 가장 중요한문제 라고생각합니다. 섬의개수문제는 여러 BFS에서 응용되기때문에 잘 기억하고 있는것을 추천함니다. 각각의 모든섬에서 다른섬으로 갈수있는지 판별하고, 더이상갈수없다면 섬의개수를 하나씩 증가시켜주면됩니다. [부분소스코드] 순서대로 ↑ ↓ ← → ↖ ↗ ↘ ↙ 상 하 좌 우 좌상 우상 우하 좌하 int xX[8] = { 0, 0, -1, 1, -1, 1, 1, -1 }; int yY[8] = { -1, 1, 0, 0, -1, -1, 1, 1 }; ..
[문제] 상하좌우로 연결된 5개의색 R, G, B, P, Y들이 같은색끼리 4개이상 연결되어있다면 사라지게된다. 뿌여는 터지고난후 중력의영향을받아 아래로떨어지고, 위를 반복하게된다. 총 몇번의 연쇄가 일어나는지 구하시오! [조건] 1. 같은색이 4개이상모인 모든색들이 동시에 터지게된다. 2. 터지고난후 남아있는 뿌요들은 바닥을 향해 떨어지고, 빈공간이 없이 쌓이게된다. [해결순서] 전체적으로 BFS를 돌려 같은색이 4개이상인곳은 Check해주고, 경우가 존재할경우 Flag를 통해 뿌요를 내릴 수 있다. 존재하지않을경우 프로그램은 그대로 종료 시키면된다. 뿌요를 내릴때 딱히 방법이생각나지않아 Stack을 사용했다. 맵 전체를 세로기준으로 순차적으로 Stack에 뿌요가 존재할경우 뿌요의 색을 저장해주고 바닥..
백준 문제를 풀면서 반복적으로 헤더를선언하고, 입출력에 대해서 진행하는것이 너무불편했어서 처음시작하거나 잘모르는 사람들에게 알려주고싶은 주관적으로 편한방법입니다. #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // #include 디버깅환경에서는 사용자가 임의지정한 여러헤더를 한번에 묶어 선언해놓으면된다. 백준채점프로그램에서 bits/stdc++.h 를 사용하기때문에 저는 bits_stdc++.h 이렇게했어요~ #ifdef _DEBU..
[문제] 간단한 BFS구현문제 라고 생각했지만, 미네랄 클러스터를 이해하는데 시간을 많이썻었다. [조건] 1. 좌, 우에서 막대기를 던질때, 미네랄이 있으면 파괴된다. 2. 미네랄이 파괴된후, 새로운 클러스터가 생성되었을 때 공중에 떠있다면 미네랄 클러스터나 바닥에 닿기전까지 계속해서 떨어진다. 다른 미네랄클러스터를 만나게된다면 합쳐진다. 3. 주어진 막대회수만큼 반복한다 [해결순서] 순서에 따라 방향에맞춰 막대기를 던지고, 그 위치에서 처음만나는 미네랄을 파괴시키면된다. 공중에 떠있는 미네랄 클러스터를 판별하는 방법이 중요한데, 바닥에 붙어있는 미네랄을 기점으로 BFS를 돌려 Check해주고 Check되지않은 미네랄 클러스터가 존재할 시에 [조건2]를 구현해주면 된다. [주의할점] 미네랄 클러스터는 한..