-
https://www.acmicpc.net/problem/14500
14500번: 테트로미노
폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변
www.acmicpc.net
https://github.com/JUNGSOONIL/JAVA/blob/main/BAEKJOON%2014500
GitHub - JUNGSOONIL/JAVA: JAVA 소스 코드
JAVA 소스 코드. Contribute to JUNGSOONIL/JAVA development by creating an account on GitHub.
github.com
해당 문제는 테트리스에 나오는 도형 모양 중에서 map에서 해당 도형 모양만큼
값을 더했을 때 그중 최댓값을 구하는 문제다.
처음에 문제를 보고 그냥 싹 완탐으로 구현하면 되겠다 생각했는데,
암만 생각해도 너무 비효율적인 거 같았고
방법이 있을 거 같았는데, 결국 방법을 찾지 못해 구글링해 보니
ㅗ 모양을 제외하곤 dfs 한 번으로 모두 체크가 가능한 것을 확인했다.
약간 내가 느꼈던 건 순조부랑 비슷한 느낌이었다.
dfs에서는 크기가 4가 되면 최댓값을 증가시켜주고 그렇지 않을 경우 계속 진행하는데,
이게 이제 처음에는 위로 4칸다 가고 그다음에 3칸에 아래 한 칸 가면 방문했으니 이제 3칸에 왼쪽 가고 3칸에 오른쪽 가고 이런 식으로 방문하면 모양을 모두 방문할 수 있다.
이후 ㅗ 모양에 대해서만 따로 코드를 작성해 주면 해결 가능하다.
흰색 부분은 모든 모양에 포함된다.
728x90'알고리즘 > Baekjoon' 카테고리의 다른 글
Baekjoon 2210 숫자판 점프 JAVA (0) 2021.11.15 Baekjoon 1058 친구 JAVA (0) 2021.11.15 Baekjoon 1890 점프 JAVA (0) 2021.11.15 Baekjoon 3273 두 수의 합 JAVA (0) 2021.11.15 Baekjoon 11054 가장 긴 바이토닉 부분 수열 JAVA (0) 2021.11.15 댓글