BOJ

[백준 14500] 테트로미노

wo_ody 2020. 3. 29. 13:45
테트로미노

안녕하세요 !!! 우디🙇입니다.

오늘은 BFS로 푼 테트로미노 문제에 대해 설명해드릴께요.

 

문제

[백준 14500] 테트로미노

 

문제 설명


1. 테트로미노
모든 모양(좌우대칭)을 종이에 하나 하나 적재해서 최댓값 구하기.

처음에 생각해낸 방법이 노가다 방법이었습니다. (직접 해보진 않았지만 ,,,)

시간 복잡도 빅오로 계산해보았을 때

500 X 500 개의 정사각형마다 테트로미노를 놓아야 되고 테트로미노 5종류 중에 좌우대칭한 모양이 각 종류마다 대충 최대 8개 있다고 하면 저렇게 계산이 되쥬 ?


이 문제의 시간 제한이 2초 (1초를 대충 1억번의 연산으로 생각) 이니깐 시간제한에도 안걸릴 것 같고 엄청난 정성이 있다면 이 방법도 괜찮은 것 같습니다 !


🙈 : 그치만 저는 깐지나게 풀래요 ❗❗

 

2. 테트로미노 모양을 만들어가면서 최댓값 구하기.

우선, (0,0) 을 기준으로 테트로미노를 만들어가는 과정을 설명하겠습니다.

 

이 과정을 트리 🌳로 나타내보면,

 

휴도 코드

 

이렇게 놓고 보니 ,,, 테트로미노 모양 하나가 빠졌죠 ❔❔

바로 법규 모양이 빠졌는데 이 모양은 위처럼 구해질 수 없으므로 따로 구해야 합니다 !

  • 연속으로 같은 방향 (상상상 하하하 좌좌좌 우우우)으로 움직였을 때, 중간의 현재좌표에서 양옆 또는 위아래로 값을 더해주면 법규 모양이 되면서 최댓값을 구할 수 있습니다 ~

 

휴도코드

 

구현