728x90
https://www.acmicpc.net/problem/3085
문제 접근
- 완전탐색으로 하나씩 교환해주며 개수를 센다.
- 상하좌우 다 교환할 필요없이 오른쪽과 아래쪽만 교환하면 된다.
# 로직은 맞는데 구현을 실패함
# 다른사람이 구현한 것 참조
import sys
input = sys.stdin.readline
n = int(input())
board = [list(input()) for _ in range(n)]
maxCnt = 0
# 행렬을 검사하여 최대값을 갱신하는 함수
def check():
global maxCnt
for i in range(n):
# 행을 검사
cnt = 1
for j in range(1, n):
if board[i][j] == board[i][j-1]:
cnt += 1
maxCnt = max(cnt, maxCnt)
else:
cnt = 1
cnt = 1
# 열을 검사
for j in range(1, n):
if board[j][i] == board[j-1][i]:
cnt += 1
maxCnt = max(cnt, maxCnt)
else:
cnt = 1
for i in range(n):
for j in range(n):
# 오른쪽과 바꿈
if j+1 < n:
board[i][j], board[i][j+1] = board[i][j+1], board[i][j]
check()
board[i][j], board[i][j+1] = board[i][j+1], board[i][j]
# 아래쪽과 바꿈
if i+1 < n:
board[i][j], board[i+1][j] = board[i+1][j], board[i][j]
check()
board[i][j], board[i+1][j] = board[i+1][j], board[i][j]
print(maxCnt)
느낀점
- 내 구현력이 왜이리 안좋나했는데 매번 구현이 좀만 안되어도 다른사람풀이를 본다..
- 직접 구현하려고 노력하는 습관들이자
코드 출저
https://kbwplace.tistory.com/130
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 - 5568(카드 놓기, python) (0) | 2023.08.18 |
---|---|
백준 - 15736(청기 백기, 파이썬) (0) | 2023.07.29 |
백준 1012 - 유기농 배추(파이썬) (0) | 2023.07.25 |
백준 - 13458(시험 감독, python) (0) | 2023.06.19 |
백준 - 14888(연산자 끼워넣기, python) (0) | 2023.06.18 |