구현 (21) 썸네일형 리스트형 [백준 2933][C++] 미네랄 문제 https://www.acmicpc.net/problem/2933 2933번: 미네랄 창영과 상근은 한 동굴을 놓고 소유권을 주장하고 있다. 두 사람은 막대기를 서로에게 던지는 방법을 이용해 누구의 소유인지를 결정하기로 했다. 싸움은 동굴에서 벌어진다. 동굴에는 미네랄 www.acmicpc.net 풀이 과정 1. 문제 조건에 맞게 입력을 받는다. 2. 순서대로 발사하여 미네랄을 부순다. 3. 부순 미네랄을 기준으로 주변을 탐색하여 미네랄 군집(cluster)을 파악하고, 중력에 의한 이동을 수행한다. 4. 최종 형태를 출력한다. 세부 풀이 (1) 초기 형태와 이후 던질 막대의 높이에 대한 정보도 한 번에 입력받아 order 배열에 넣어 저장한 뒤 사용했다. (2) shoot 함수 order 배열에 .. [백준 23291][C++] 어항 정리 문제 https://www.acmicpc.net/problem/23291 23291번: 어항 정리 마법사 상어는 그동안 배운 마법을 이용해 어항을 정리하려고 한다. 어항은 정육면체 모양이고, 한 변의 길이는 모두 1이다. 상어가 가지고 있는 어항은 N개이고, 가장 처음에 어항은 일렬로 바 www.acmicpc.net 풀이 과정 해당 문제는 풀이에 실패했다. 따라서 해당 문제에 대한 다른 사람들의 코드를 둘러보게 되었다. 그중 정말 깔끔하고 잘 구현되었다고 생각되는 포스팅의 코드를 살펴보는 식으로 글을 진행할 것이다. https://kimjingo.tistory.com/111 [백준 23291번] 어항 정리(C++ 풀이) https://www.acmicpc.net/problem/23291 23291번: 어.. [백준 23290][C++] 마법사 상어와 복제 문제 https://www.acmicpc.net/problem/23290 23290번: 마법사 상어와 복제 첫째 줄에 물고기의 수 M, 상어가 마법을 연습한 횟수 S가 주어진다. 둘째 줄부터 M개의 줄에는 물고기의 정보 fx, fy, d가 주어진다. (fx, fy)는 물고기의 위치를 의미하고, d는 방향을 의미한다. 방향 www.acmicpc.net 풀이 과정 1. 현재 저장되어 있는 물고기들의 상태를 복사한다. (이후 모든 과정을 수행 후 fish_map에 추가) 2. 물고기들을 조건에 맞게 이동시킨다. 3. 상어의 이동할 경로를 DFS를 통해 찾은 후, 이동시킨 상태를 fish_map에 반영한다. 4. 물고기를 먹은 흔적인 냄새를 감소시킨다. 5. 복사했던 물고기들을 fish_map에 추가한다. 6... [백준 21611][C++] 마법사 상어와 블리자드 문제 https://www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 풀이 과정 1. 중간을 기준으로 달팽이 모양으로 좌표를 미리 벡터에 저장해놓는다. 이후의 탐색은 해당 벡터를 이용한다. 2. d와 s를 이용하여 블리자드를 통해 구슬을 파괴한다. 3. 칸에 빈칸이 존재하면 앞으로 당겨온다. 4. 같은 칸이 4칸 이상 지속되면 폭발시킨다. (폭발 후 빈칸이 발생하면 3번 함수를 이용한다) 5. 더 이상의 폭발이 없다면 달팽이 모양으로 탐색하며.. [백준 21610][C++] 마법사 상어와 비바라기 문제 https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net 풀이 과정 1. 구름을 이동시키는 함수 구현 (이동 후 좌표 설정 방법은 마법사 상어와 파이어볼 문제와 동일 [문제] [풀이 및 소스코드]) 2. 구름 위치에 물의 양을 늘리는 함수 구현 (이후 구름이 사라진다고 했지만, 구름 위치 정보 보존해야 한다) 3. 물의 양이 증가한 각 칸에 대해서 대각선을 탐색하고 그 수만큼 칸의 물을 증가시키는 함수 구현 4. 새로운 구름을 만드는 함수 .. [백준 21609][C++] 상어 중학교 문제 https://www.acmicpc.net/problem/21609 21609번: 상어 중학교 상어 중학교의 코딩 동아리에서 게임을 만들었다. 이 게임은 크기가 N×N인 격자에서 진행되고, 초기에 격자의 모든 칸에는 블록이 하나씩 들어있고, 블록은 검은색 블록, 무지개 블록, 일반 블록 www.acmicpc.net 풀이 과정 1. 회전 함수 구현 2. 중력 함수 구현 3. 탐색을 통해 가장 큰 블록을 찾는 함수 구현 블록 수 같은 경우 무지개 블록 확인 무지개 블록 수 같으면 기준 블록 확인 4. 블록 찾아서 제거, 중력, 회전, 중력 순으로 수행되는 하나의 사이클 생성 5. 만약 찾은 최대 블록의 수가 1개 이하라면 그룹이 없는 것이므로 종료하며 현재까지 점수의 합 출력 세부 풀이 (1) rota.. [백준 20058][C++] 마법사 상어와 파이어스톰 문제 https://www.acmicpc.net/problem/20058 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net [참고 풀이 링크 : YJYOON`s Code Story] 해당 문제의 풀이 시간이 개인적으로 정했던 기준 시간을 초과하여 풀지 못했으므로 다른 분의 코드를 참고하여 공부하였습니다. 회전하는 함수의 논리와 dfs를 통한 간결한 구현을 배울 수 있는 좋은 풀이라고 생각하였습니다. 해당 코드에 대한 저의 생각을 아래 형식에 맞게 서술하도록 하겠습니다. 풀이 과정 1. 격자 사.. [백준 20056][C++] 마법사 상어와 파이어볼 문제 https://www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 풀이 과정 1. 파이어볼의 정보를 담을 구조체 생성, 파이어볼을 각 위치의 queue에 저장하도록 구현 2. 각 인덱스의 queue를 방문하여 존재하는 모든 파이어볼의 이동을 수행하는 함수 구현 3. 이동 후 2개 이상의 파이어볼이 있는 칸은 합쳐지고 나뉘는 과정을 거친다. 4. 2-3 과정을 K번 반복한 뒤 모든 queue에 있는 파이어볼의 질량의 합.. 이전 1 2 3 다음