본문 바로가기

■ 알고리즘 문제 풀이

(74)
[BOJ] 백준 14499. 주사위 굴리기 ▶문제설명[BOJ] 14499. 주사위 굴리기 https://www.acmicpc.net/problem/14499 ▶Hint시뮬레이션 문제이다. 4 x 3 행렬에 주사위를 전개도로 나타내고, 주사위를 상/하/좌/우로 굴렸을 때 전개도 상태를 업데이트 해주면 된다. 처음에는 6면 모두 0으로 시작하며, 숫자판에서 주사위가 위치한 곳의 숫자가 0인 경우 주사위 밑바닥에 적힌 숫자가 점수판에 복사되고, 주사위 밑바닥에 적힌 숫자가 0인 경우 주사위가 위치한 곳의 숫자가 주사위 밑바닥에 복사된다. 주어진 입력에 따라 그대로 실행하되, 숫자판의 범위를 초과하는 경우는 무시한다. ▶Solution
[SWEA] 2112. 보호 필름 ▶문제설명[SWEA] 2112. 보호 필름 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5V1SYKAaUDFAWu&categoryId=AV5V1SYKAaUDFAWu&categoryType=CODE ▶HintDFS 문제이다. 아래와 같이 3번의 재귀 호출로 모든 경우를 탐색할 수 있다. 현재 필름의 상태를 저장한다. 1. 약품을 주입하지 않고 다음 필름의 인덱스와 현재 약품 주입 횟수를 인자로 하여 함수를 재귀적으로 호출한다. 2. 현재 필름에 A약품을 주입하고 다음 필름의 인덱스와 현재 약품 주입 횟수+1을 인자로 하여 함수를 재귀적으로 호출한다. 3. 현재 필름에 B약품을 주입하고 다음 필름의 인덱스..
[SWEA] 1868. 파핑파핑 지뢰찾기 ▶문제설명[SWEA] 1868. 파핑파핑 지뢰찾기 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LwsHaD1MDFAXc&categoryId=AV5LwsHaD1MDFAXc&categoryType=CODE ▶Hint지뢰가 없는 위치에 상/하/좌/우/대각선 8방향에 존재하는 지뢰의 개수를 먼저 구한 뒤 지뢰 개수가 0개인 위치를 먼저 click해서 연쇄적으로 터뜨린 후 나머지를 click해서 해결하면 된다. ▶Solution
[BOJ] 백준 3055. 탈출 ▶문제설명[BOJ] 3055. 탈출 https://www.acmicpc.net/problem/3055 ▶Hint매 초마다 물이 퍼져나가는 것을 먼저 처리한 뒤 고슴도치가 이동 가능한 경로로 이동하게 하면 된다. BFS를 활용하면 도착지까지 이동 가능한 모든 경로를 탐색해볼 수 있다. 도착지에 도달했을 때 걸린 시간이 가장 짧은 것을 정답으로 한다. ▶Solution
[SWEA] 5644. 무선 충전 ▶문제설명[SWEA] 5644. 무선 충전 https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRDL1aeugDFAUo ▶Hint각 BC의 충전 가능 영역을 3차원 배열로 저장한다. 그러면 사용자 A와 B가 현재 위치에서 접속할 수 있는 BC를 모두 체크할 수 있다. 사용자 A와 B를 1초에 한칸씩 이동시키고, 매 초마다 현재 위치에서 접속할 수 있는 BC를 모두 체크하면서 (완전 탐색) 가장 큰 충전량 누적 값을 찾으면 된다. A와 B가 같은 BC의 영역에 속하는 경우 충전량을 반으로 나누어 가지게 된다는 점을 주의해야 한다. ▶Solution
[SWEA] 4014. 활주로 건설 ▶문제설명[SWEA] 4014. 활주로 건설https://www.swexpertacademy.com/main/code/problem/problemSubmitHistory.do?contestProbId=AWIeW7FakkUDFAVH ▶Hint땅의 높이들이 주어진다.땅의 높이 차가 1인 경우에 경사로를 놓아 활주로를 연결할 수 있다. 경사로의 높이는 항상 1이며, 세로로 세울 수 없다. 단, 경사로의 길이 X가 주어지는데활주로를 만드는 과정에서경사로가 길어서 놓을 공간이 부족한 경우,경사로가 겹쳐지게 놓이는 경우는 허용하지 않는다. 가로, 세로로 완성될 수 있는 활주로 라인의 개수를 구하는 문제다. 내리막길과 오르막길로 나누어서 생각하고내리막길일때 경사로를 놓는 경우 그 위치를 체크해두고,오르막길일때 경사로..
[SWEA] 6808. 규영이와 인영이의 카드게임 ▶문제설명[SWEA] 6808. 규영이와 인영이의 카드게임https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0 ▶Hint1부터 18까지의 숫자로 이루어진 카드가 있을 때,규영이가 9장, 인영이도 9장으로 나눠 가지고 간단한 카드 게임을 한다. [게임 규칙]각자 가지고 있는 카드들 중 하나를 뽑아서 낸다.카드의 번호가 더 큰 사람이 승리하며, 승리자는 제출한 카드 두 장의 합을 점수로 얻는다. 규영이는 카드를 받은 순서대로 제출하는 것으로 고정한다.인영이는 9!의 모든 경우의 수로 카드를 제출할 수 있다. 이 게임에서 규영이가 승리하는 경우의 수와, 지는 경우의 수를 계산하여 출력해야한..
[SWEA] 5653. 줄기세포배양 ▶문제설명[SWEA] 5653. 줄기세포배양https://www.swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRJ8EKe48DFAUo&categoryId=AWXRJ8EKe48DFAUo&categoryType=CODE ▶Hint입력으로 주어지는 K의 최대값이 300이므로세포의 생명력이 모두 1이라고 가정했을 때 상하좌우 최대 150개씩 번식해 나갈 수 있다. 입력으로 주어지는 세포의 정보를 저장할 2차원 배열을 하나 만들고좌표의 시작값을 한 가운데로 하여 세포의 생명력 값을 입력받는다. [각 세포가 가지는 정보]1. 비활성/활성/죽음을 나타내는 상태 정보2. 생명력3. 좌표4. 번식의 여부5. 상태가 변화할 다음 시간에 대..