Link https://www.acmicpc.net/problem/3085
소스결과 1988 KB / 60 ms
출처 Baekjoon
언어 C++ 17
분류 Brute Force
설명
사탕을 가까운 사탕과 위치를 바꿨을 때 먹을 수 있는 사탕의 최대 값을 구하여라.
일단 보드의 최대 크기가 50밖에 안된다.
또한 모든 자리에 대해서 상, 하, 좌, 우 전부 탐색하는 것이 아닌 하, 우 만 검색하면 된다.
검색하는 위치가 그리디 하게 진행이 가능한 이유는 x 또는 y위치에 대해서 -1 위치와 바꾸는 것은
x-1 또는 y-1의 위치에서 +1 위치로 바꾸는 결과와 똑같기 때문이다.
따라서 최대 2500개 위치에 대해서 두 번씩 자리 변경을 한 후 각 행과 열에 대해서 연속 개수를 알아낸 후 최대값을 갱신해 출력한다.
알고리즘
1. 초기 보드 상태를 받는다.
2. 각 자리에 대해서 x + 1 , y / x , y + 1 위치와 변경 후 연속된 행 또는 열의 개수를 헤아린다.
3. 최대값을 출력한다.
소스코드
'Algorithm > Brute Force' 카테고리의 다른 글
Baekjoon 2231 분해합 (0) | 2019.08.21 |
---|---|
Baekjoon 17135 캐슬 디펜스 (0) | 2019.06.02 |
Baekjoon 17136 색종이 붙이기 (0) | 2019.06.02 |
Baekjoon 14500 테트로미노 (0) | 2019.06.02 |
Baekjoon 16675 두 개의 손 (0) | 2019.03.31 |