백준 삼성 코딩 기출 문제 - 테트로미노 python
출처 : BAEKJOON ONLINE JUDGE
2048 (Easy) (https://www.acmicpc.net/problem/14500)
문제 설명
문제는 흔히 우리가 알고 있는 테트리스의 모양을 이용해서 주어진 맵 NxM에 어느 위치에 있던 테트로미노 하나를 놓게 됩니다. 그러면 테트로미노 안에 놓여 있는 칸에 수들의 합을 최대로 구하는 프로그램을 구하는 것입니다.
figure reference(https://www.acmicpc.net/problem/14500)
첫 번째 케이스를 예로 들면 다음과 같이 합의 최대값 19를 뽑을 수 있습니다.
모든 경우의 계산을 진행해야 합니다. 회전과 대칭에 따라 테트리스의 모양은 19개 입니다.
문제 풀이
[1] 입력을 받습니다.
[2] 위에서 정의한 테트로미노의 19가지 모양에 대해서 4가지의 블록의 (x,y)를 정의합니다.
[3] solve() 모든 board의 위치에서 테트로미노를 놓고 합산한 값을 찾는 find()를 호출합니다.
[4] find()에서는 주어진 좌표 x, y에 대해 테트로미노 19가지 모양을 놓고 계산합니다.
- 테트로미노는 4가지 블락으로 구성되기 때문에 각 블락을 놓았을 때 x, y 좌표를 계산하고 합산 값을 구합니다.
- 만약에 현재 위치에서 테트로미노가 board의 바깥으로 나가게 된다면 index error가 발생하므로 try, except, IndexError 처리를 합니다. except이 발생할 경우 continue로 다음 블락을 계산합니다.
- 최종적으로 최대 값을 max로 비교하여 저장합니다.
전체 코드
'Algorithm' 카테고리의 다른 글
백준 삼성 코딩 기출 문제 - 연구소 python (0) | 2019.10.19 |
---|---|
백준 삼성 코딩 기출 문제 - 퇴사 python (2) | 2019.10.18 |
백준 삼성 코딩 기출 문제 - 주사위 굴리기 python (3) | 2019.10.17 |
백준 삼성 코딩 기출 문제 - 시험 감독 python (0) | 2019.10.17 |
백준 삼성 코딩 기출 문제 - 2048 (Easy) python (4) | 2019.10.16 |