이제 지겨운 DP를 끝내고, 더욱 재밌어보이는(?) 브루트포스를 풀고 있다.
근데 어렵다...... 특히 구현하는 문제가 난이도가 높아보인다.
진짜 역대급이다. 왜이렇게 배열을 떠올리면서 문제를 푸는 것이 어려운지....
다른 사람들의 코드를 보고 정리해서 써봤다.
def check(arr):
n=len(arr)
answer=1
for i in range(n):
count=1
for j in range(1,n):
if arr[i][j]==arr[i][j-1]:
count+=1
else:
count=1
if count>answer:
answer=count
count=1
for j in range(1,n):
if arr[j][i]==arr[j-1][i]:
count+=1
else:
count=1
if count>answer:
answer=count
return answer
n=int(input())
answer=0
candies=['0' for _ in range(n)]
for i in range(n):
candies[i]=[x for x in input()]
for i in range(n):
for j in range(n):
if j+1<n:
candies[i][j],candies[i][j+1]=candies[i][j+1],candies[i][j]
number=check(candies)
if number>answer:
answer=number
candies[i][j],candies[i][j+1]=candies[i][j+1],candies[i][j]
if i+1<n:
candies[i][j],candies[i+1][j]=candies[i+1][j],candies[i][j]
number=check(candies)
if number>answer:
answer=number
candies[i][j], candies[i+1][j] = candies[i+1][j],candies[i][j]
print(answer)
아니... 이게 뭘까? 싶을 수 밖에 없다.
여기서 check라는 함수는 한 줄에 같은 색이 몇 개 있는지 알 수 있는 코드이다.
check라는 함수에 리스트를 넣기 전에, 먼저 한 칸 한 칸 바꿔보고, 그리고 check에 넣는다.
check에서 행과 열에 따라서 몇 개의 수가 있는지를 알려주고, 전에 나왔던 값보다 크면 최신화한다.
어렵다..... 노력을 훨씬 많이 해야 함을 느낀다.
'Computer Science > Algorithm' 카테고리의 다른 글
BOJ 15469: N과 M (1) (0) | 2022.02.05 |
---|---|
BOJ 6064: 카잉 달력 (0) | 2022.01.07 |
BOJ 1932: 정수 삼각형 (0) | 2022.01.06 |
BOJ 2156: 포도주 시식 (0) | 2022.01.05 |
BOJ 11057: 오르막 수 (+중복조합 야매) (0) | 2022.01.04 |