백준 C++ 2234번 https://www.acmicpc.net/problem/2234 이 문제에서 비트가 켜져있으면 이동하면 안된다라는 점은 쉽게 알아낼 수 있었다.하지만 고민한 문제는 벽을 1개를 허문다는 점이었다.실제로 모든 칸에 대해서 한 비트씩 끄는 건 너무 비효율적이라고 생각했어서 다른 방법을 찾았어야했다.생각보다 방법은 쉽게 할 수 있었는데 visited로 구역을 나누는 것으로 했다. #include using namespace std;//성 방의 갯수 -> sectionNum - 1//가장 넓은 방의 넓이//하나의 벽을 제거하여 얻을 수 있는 가장 넓은 방의 크기int n, m; int sectionSize = 0;int sectionNum = 0;int maxSectionSize = 0;int maxLink.. 2024. 5. 13. 백준 14890 C++ https://www.acmicpc.net/problem/14890이 문제는 조건이 까다롭지 하나하나 따지며 생각하면서 if문으로 뚫으면 괜찮다.실수한게 재귀함수에 return을 넣지 않아서 계속 result가 다르게 나와서 cout을 곳곳에 넣었는데 오히려 이 글을 보시는 분들이 출력을 잘 볼 수 있는 좋은 상황이 된거 같다. #include #include using namespace std;int n, l;int arr[101][101];int temp[101][101];int landCount = 0;int result = 0;void go(int y, int x, int past){ if (x >= n) { //끝까지 옴. //cout 1 || sub 0) { //현재가 더 높다. if.. 2024. 4. 27. 백준 2910 C++ https://www.acmicpc.net/problem/2910 2910번: 빈도 정렬 첫째 줄에 메시지의 길이 N과 C가 주어진다. (1 ≤ N ≤ 1,000, 1 ≤ C ≤ 1,000,000,000) 둘째 줄에 메시지 수열이 주어진다. www.acmicpc.net 여기서 고민한 점은 결국 빈도수와 숫자가 가장 먼저 나온 index를 저장하는 방식이었다. set을 쓸까 고민도 했지만 map으로 진행하였다. map을 사용하는 방법에 대해서 잘 몰랐는데 덕분에 한번 알아보게 되었고 아래 코드에서 bin[t] == 0으로 확인하듯이 map에 값이 없으면 0으로 되어 있단 점을 이용해 이미 한번이라도 들어왔는지 확인을 하였다. #include #include #include #include using nam.. 2024. 4. 23. 백준 17471 C++ https://www.acmicpc.net/problem/17471 17471번: 게리맨더링선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다.www.acmicpc.net 이 문제에서 비트마스킹을 어떻게 사용할지는 큰 고민을 하지 않았다.하지만 고민이 깊어진 것은 선거구가 모두 연결되어있는지? 이걸 어떻게 알것인가였다.처음에는 각 선거구를 vector로 저장해서 visited로 해당 선거구vector에 있는 요소가 다 들어왔는지 체크하려고 했다.아.. 근데 생각보다 복잡하게 코드가 흘러가서 파기하고 dfs로 돌며 모든 노드를 방문하였는지로 생각하였다. 결국 시작점이 0선거구 1선거구로 나눠.. 2024. 4. 17. 이전 1 ··· 9 10 11 12 13 14 15 ··· 23 다음