본문 바로가기

알고리즘23

백준 1939 중량제한 C++ 간단한 해설시작점부터 도착점까지 최대 중량 제한을 bfs로 찾으면 된다.같은 지점을 여러 번 방문할 수 있어서 int인 방문 배열로 체크하는게 포인트간단한 반례6 121 2 71 3 81 4 71 6 92 3 73 4 73 5 74 5 74 6 73 6 71 3 115 6 126 3ans: 9 답 #include #include #include #include using namespace std;int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n,m; cin>>n>>m; vector>> v(n+1,vector>()); // weight, idx for(int i=0;i>a>>b>>c; v[a].pus.. 2024. 8. 19.
백준 20055 컨베이어 벨트 위의 로봇 C++ 간단한 해설지문이 거지같아서 문제가 어렵다고 느낀 문제 1번 위치에서 로봇을 올리고, N번 위치에 로봇이 도착하면 로봇을 무조건 내린다.(내릴 때, 내구도는 소모하지 않음)  이하의 스크린샷에 담긴 모든 과정의 사이클이 돌아야 한 단계이다.(서식오류로 12134로 된 듯하다.)  다음의 링크를 통해 개선된 지문을 확인할 수 있다. problem-solve-hub/백준/Gold/20055. 컨베이어 벨트 위의 로봇/이해를 위한 문제 수정본.md at main · cThis is a auto push repository for Baekjoon Online Judge created with [BaekjoonHub](https://github.com/BaekjoonHub/BaekjoonHub). - codesv.. 2024. 8. 18.
백준 14222 배열과 연산 C++ 해설1부터 n까지 빈자리 모두 채워넣기 1부터 빈자리 찾아넣는다고 해서 그리디라고는 한다는거같은데 그리디의 개념은 조금 약한거 같다.간단하게 풀기 가능답#include #include #include using namespace std;int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n,k; cin>>n>>k; vector v(n); for(int i=0;i>v[i]; } sort(v.begin(),v.end()); vector visited(n,false); for(int i=0;i 2024. 8. 7.
백준 1781 컵라면 C++ 해설문제를 처음 보자마자 그리디 알고리즘인 것을 깨닫고 우선순위 큐를 사용하였다. n과 데드라인이 20만까지 나올 수 있으므로, n이 20만이고, 모든 숙제의 데드라인이 20만인 경우의 수를 생각해봐야 한다. 데드라인에 맞춰 가장 큰 컵라면의 수를 뽑을려 하면 시간초과에 걸린다. 그렇기에 반대로 생각해서 날짜를 정한다.제일 처음 날짜부터 차례대로 정해두고 가장 큰 컵라면의 수를 꺼내면 문제를 풀 수 있다. 이때, 데드라인때문에 삭제될 수 있는 값들은 우선순위 큐를 하나 더 이용해서 지우는 것이 포인트이다. 답 #include #include #include #include #define ll long longusing namespace std;int main(){ cin.tie(0); ios_.. 2024. 8. 3.
백준 14445 케이크(?) 자르기 C++ 해설애드혹 문제라서 발상을 떠올리는게 쉽지 않았다.케이크의 높이가 명시되어 있지 않으므로, 케이크의 높이가 케이크 윗면의 가로 길이랑 다를 수 있음을 인지해야 한다. 케이크의 높이가 다르기에 자르는 방식에 따라 케이크의 옆면에 묻은 생크림이 달라질 수 있다.이에 따라, 케이크의 윗면과 옆면을 어떻게 배분해야 하는가에서 난관이 생긴다. 그러나 이는 원을 n등분 할 때를 떠올리면 해결된다.  윗면이 원인 원통형 기둥을 생각해보자. 원의 중심을 따라 n등분하면 옆면을 쉽게 배분할 수 있다. 그래서 이 문제에서는 모든 절취선이 정사각형의 중심을 통해서 n등분이 되면 높이, 즉 옆면을 신경쓰지 않고 케이크를 수직으로 자르면 된다. 이제, 케이크의 윗면만 n등분해서 배분하면 되는 문제로 바뀐다. n = 1의 경우,.. 2024. 8. 2.
백준 12869 뮤탈리스크 간단한 해설 뮤탈 타다당을 얼마나 효율적으로 쏠 지 계산하는 문제 n이 최대 3이고 최대 체력이 60이니까 단순한 bfs로 해결할 수도 있다고 생각할 수 있으나, 방문 처리를 안해주면 방문한 곳을 재방문해서 시간초과가 일어날 수 있음을 명시해야 한다. 재방문처리를 생각하면 문제 유형은 dp+bfs라 생각해도 된다. 코드를 좀 더 간결하게 짤 수도 있었지만 그냥 문제풀이가 목적이므로 같은 부분을 반복해서 복붙했다. 헷갈리지 않도록 주석 쓴게 포인트답#include #include #include #include using namespace std;int dp[61][61][61];int main(){ cin.tie(0); ios_base::sync_with_stdio(0); int n; .. 2024. 7. 29.