https://www.acmicpc.net/problem/3085
>>문제 포인트
- 브루트포스: 인접한 사탕들을 모두 바꾸면서 최대 사탕길이를 찾음
- 행과 열 각각을 기준으로 인접영역을 확인하며 연속된 최대 값을 뽑아주는 함수 제작
>>느낀점
행열 및 좌표가 나올때마다 구현문제에서 막히는 느낌이라
2차원 배열을 활용한 좌표계 사용에 익숙해질 필요가 있음
#3085번
#연속한 최대 사탕의 개수를 새는 함수
def check_long(data):
max_cnt=1
for i in range(n):
cnt=1
#행기준 검사
for j in range(n-1):
#가로로 연속될때
if data[i][j]==data[i][j+1]:
cnt+=1
#연속이 끊길때
else:
cnt=1
max_cnt= max(cnt, max_cnt)
cnt=1
#열기준 검사
for j in range(n-1):
#세로로 연속될때
if data[j][i]==data[j+1][i]:
cnt+=1
#연속이 끊길때
else:
cnt=1
max_cnt= max(cnt, max_cnt)
return max_cnt
n= int(input())
data=[list(input()) for i in range(n)]
#브루트 포스 -> 인접한 행들을 하나씩 바꾸면서 검사
answer=0
result=0
for i in range(n):
for j in range(n):
if j+1<n:
data[i][j], data[i][j+1]= data[i][j+1], data[i][j] #가로로 바꾸기
result=check_long(data) #연속된 가장 긴 사탕개수 구하기
answer= max(answer, result) #answer갱신
data[i][j], data[i][j+1]= data[i][j+1], data[i][j] #원래대로
if i+1<n:
data[i][j], data[i+1][j]= data[i+1][j], data[i][j] #세로로 바꾸기
result=check_long(data) #연속된 가장 긴 사탕개수 구하기
answer= max(answer, result) #answer갱신
data[i][j], data[i+1][j]= data[i+1][j], data[i][j] #원래대로
print(answer)
'백준 문풀' 카테고리의 다른 글
[Python] 구현-13335. 트럭(실1) /큐와 시뮬레이션 (0) | 2023.08.11 |
---|---|
[Python] 구현 - 1966.프린터큐(실3) / 큐 (0) | 2023.08.10 |
[Python] 구현 - 7568. 덩치(실5) / 브루트포스 (0) | 2023.08.09 |
[Python] 그리디 - 1461. 도서관(골4) (0) | 2023.08.08 |
[Python] 조건분기 - 1002. 터렛 (실3) / 두 원의 위치관계 (0) | 2023.08.08 |