Loading...

다이나믹 프로그래밍+BFS+그리디 - 정확히 K번만에 목표에 도달할 수 있는가?

1. 문제 28069번: 김밥천국의 계단 (acmicpc.net) 28069번: 김밥천국의 계단 첫 번째 줄에 계단 개수에 해당하는 $N$, 계단을 오르는 횟수 $K$가 주어진다. $(1 \leq N, K \leq 1\,000\,000)$ www.acmicpc.net 2. 풀이1 그냥 보면 두가지 행동중 하나를 할 수 있는 전형적인 BFS문제 1) 한칸을 올라간다 2) $\left \lfloor \frac{i}{2} \right \rfloor$만큼 올라간다 0번부터 시작한다고 명시되어 있으니 BFS처럼 풀어보면.. 정확히 K번 행동해야하면서 매 행동마다 queue의 길이만큼 순회시키는데 해당 좌표 i가 i+1과 i+i//2를 이동할 수 있으면 queue에 넣어주고.. K번 행동한 후에 n이 queue에 ..

2023. 6. 9. 18:59

그리디 알고리즘 - 효과적으로 겹치는 구간을 하나로 합치는 방법(스위핑 기본)

1. 문제 2170번: 선 긋기 (acmicpc.net) 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y (-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net 2. 풀이 x와 y 사이 선을 긋는데, 총 얼마만큼 선을 그었는지 구하는 문제 한번 그어진 곳을 또 긋는다고 해서, 중복해서 세지 않는다 어려워보여도 예제를 보고 머릿속으로 생각해보면 생각보다 문제가 간단하다 4 1 3 2 5 3 5 6 7 수직선 위에 1,3을 찍고 그어본다. 그러면 그은 길이가 2인데 이제 2,5를 찍고 그어본다 그러면 총 그은 길이는 4임을 알 수 있는..

2023. 6. 3. 03:27

경이로운 그리디 알고리즘3 -가장 효율적으로 좌우로 이동하는 방법-

1. 문제 1461번: 도서관 (acmicpc.net) 1461번: 도서관 세준이는 도서관에서 일한다. 도서관의 개방시간이 끝나서 세준이는 사람들이 마구 놓은 책을 다시 가져다 놓아야 한다. 세준이는 현재 0에 있고, 사람들이 마구 놓은 책도 전부 0에 있다. 각 책 www.acmicpc.net 2. 풀이 문제를 좀 파악부터 해보면 배열의 원소가 책의 위치이며 0에서 시작해서 이동을 해가지고 m개 이내의 책을 들고 다시 0으로 돌아와서 책을 둔 다음에, 이런 식으로 모든 책을 회수해야할때, 최소 이동거리를 구해라 마지막에 모든 책을 회수할때는 0으로 돌아오지 않아도 된다 ---------------------------------------------------------------------------..

2023. 5. 31. 00:20

경이로운 그리디 알고리즘2 -인접한 원소간 차이로 그룹을 나누는 방법-

1. 문제1 13164번: 행복 유치원 (acmicpc.net) 13164번: 행복 유치원 행복 유치원 원장인 태양이는 어느 날 N명의 원생들을 키 순서대로 일렬로 줄 세우고, 총 K개의 조로 나누려고 한다. 각 조에는 원생이 적어도 한 명 있어야 하며, 같은 조에 속한 원생들은 서로 www.acmicpc.net 2. 풀이 크기가 n인 배열을, 인접한 원소끼리 그룹으로 나누고자 하는데, 그룹간 최댓값과 최솟값의 차이의 합이 최소가 되도록 k개의 그룹으로 나누고자 할때, 그 차이의 합의 최솟값을 구한다면? 모르는데 생각해낸다면 정말 재능있는거고.. 테크닉을 알아도 감탄밖에 안나온다 ----------------------------------------------------------------------..

2023. 5. 16. 01:22

문자열 그리디 연습1 - 최소 횟수로 교환해서 두 문자열 같게 만들기

1. 문제 13413번: 오셀로 재배치 (acmicpc.net) 13413번: 오셀로 재배치 로봇을 좋아하는 세희는 로봇동아리에서 카메라와 센서, 라즈베리 파이, 집게발을 이용해 로봇을 완성하였다. 이 로봇을 통해서 오셀로 재배치라는 작업을 하려고 한다. 오셀로 말은 앞면이 검 www.acmicpc.net 2. 풀이1 문자열의 문자를 바꾸는 방법이 2가지 1) B는 W로, W는 B로 뒤집기 2) 서로 다른 두 위치의 문자를 교환하기 이런 상황에서 두 문자열이 서로 같게 만드는, 최소 횟수로 교환하는 방법을 찾을려면? 탐욕적으로 생각해보면 생각보다 간단한 문제다 두 문자열을 처음부터 동시에 순회해서, 두 문자가 서로 같다면 그대로 넘어가면 될거고 두 문자가 서로 다른 순간에 교환을 해야할거임 0번째는 W와..

우선순위 큐 재활하면서 응용력 키우기1 -카드 정렬하기, N번째 큰 수

1. 문제1 1715번: 카드 정렬하기 (acmicpc.net) 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 2. 풀이 문제를 잘 보면 매 순간 최소인 얘들을 더해나가면 최적이 될 것 같다는 생각이 든다 우선순위 큐에 주어진 수를 모두 넣는다 큐가 빌때까지 정수를 2개 뽑아, 두 수를 더한 다음에, 다시 우선순위 큐에 넣어준다. 그러니까, 10, 20, 40이 있는데, 10,20을 뽑아 10+20을 한 다음에 40을 바로 뽑는게 아니고, 30을 우선순위 큐에 넣어서 30,40이 된 상태에서,..