오블완3 백준 13164 행복 유치원 C++ 간단한 해설 다음과 같은 문제에서는 조를 k개의 조로 나누고, 그 조의 최댓값과 최솟값의 차가 비용이다.그리고 그 차의 합이 최소가 되는 값을 구해야 한다. 그러면 우리가 그 값을 어떻게 생각해야할까? 5 31 3 5 6 10다음과 같이 값이 주어졌다고 생각해보자. 그러면 당연히 5와 6을 묶고, 그리고 제일 차이가 적어보이는 3이랑 묶어서 1 / 3 5 6 / 10 또는, 1 3 / 5 6 / 10 이런 두 가지 경우의 수가 나올 것이다. 여기서 지목해야 하는 것은 값의 차이이다. 값의 차이를 기준으로 묶으면 된다.그러면 값의 차이를 기준으로 입력값을 다음과 같이 나타낼 수 있다. // 이전1 3 5 6 10// 이후 2 2 1 4 이렇게보니까 뭔가 감이 잡힌다.아까 내가 임의로 선택한 방식이 어떤 .. 2024. 11. 18. 백준 1990 소수인팰린드롬 C++ 간단한 해설 범위가 5~100,000,000이므로 최대 1억까지의 정수를 탐색한다. O(n) 정도면 얼추 된다는 뜻이다. 일단 에라토스테네스의 체를 이용해서 소수를 판별한다. 그리고 범위 안의 소수인 수들만 팰린드롬 판별을 하면 된다. 팰린드롬 판별은 수를 문자열로 변환하고, reverse() 메서드를 이용해서 간단하게 비교하면 된다. 답 #include #include #include #include #define ll long longusing namespace std;int main(){ cin.tie(0); ios_base::sync_with_stdio(0); ll a,b; cin>>a>>b; vector v(b+1,true); v[0]=v[1]=false; for(ll i=2;i ans; for.. 2024. 11. 14. 백준 27896 특별한 서빙 C++ 간단한 해설처음에는 투포인터를 사용해서 문제를 풀려고했었다. 그러나 음식을 앞에 서있는 학생부터 순서대로 서빙할 때, 어떤 한 순간이라도 불만도가 M 이상이 되면 학생들은 ‘가지 운동’을 일으키게 된다. 이 지문때문에, 우선순위 큐로 관리해서 푸는 것이 해법임을 깨달았다. 처음부터 일단 음식을 파로 받는다. 그러다가 불만도가 M 이상이 되면, 제일 큰 값을 가지로 바꾸면 된다. (이때, 더해준 값을 빼준 값으로 바꿔야하므로 -2*x_i로 한다.) 답#include #include #include #include #define ll long longusing namespace std;int main(){ cin.tie(0); ios_base::sync_with_stdio(0); ll n,m; cin>>n>.. 2024. 11. 8. 이전 1 다음