본문 바로가기
BOJ

[python] 3085번 - 사탕게임 #유지니의 일기 3-2

by yujinkimkim 2023. 1. 17.

3085번: 사탕 게임 (acmicpc.net)

 

3085번: 사탕 게임

예제 3의 경우 4번 행의 Y와 C를 바꾸면 사탕 네 개를 먹을 수 있다.

www.acmicpc.net

난 바보똥꼬다...

 

이 문제가 브루트포스 알고리즘 전형적인 문제라는데...

세상에 알고리즘이 정말 다양한걸 백준을 통해 알아가네용...

 

감이 안 잡혀서 구글링 해보다가

엄청나게 깔끔하고 간단하게 하신 분이 계시는데

아무리 생각해도 이것보다 깔끔할 수는 없을 것 같아서

그냥 거의 따라쳤다...

죄송하고...감사합니다...

n = int(input())

array = []

for _ in range(n):
    colors = list(map(str, input()))
    array.append(colors)

maxCount = 0

def row():
    global maxCount

    for k in range(n):
        countRow = 1
        for l in range(n - 1):
            if array[k][l] == array[k][l + 1]:
                countRow += 1
                maxCount = max(maxCount, countRow)
            else:
                countRow = 1

def col():
    for k in range(n):
        global maxCount

        countColumn = 1
        for l in range(n - 1):
            if array[l][k] == array[l + 1][k]:
                countColumn += 1
                maxCount = max(maxCount, countColumn)
            else:
                countColumn = 1


for i in range(n):
    for j in range(n - 1):
        if array[i][j] != array[i][j + 1]: #행이 다를 경우
            array[i][j], array[i][j + 1] = array[i][j + 1], array[i][j]
            row()
            col()
            array[i][j + 1], array[i][j] = array[i][j], array[i][j + 1]

        if array[j][i] != array[j + 1][i]: #열이 다를 경우
            array[j][i], array[j + 1][i] = array[j + 1][i], array[j][i]
            row()
            col()
            array[j + 1][i], array[j][i] = array[j][i], array[j + 1][i]

print(maxCount)

함수는 열 중에 같은 게 있는지 보는 함수랑 행 중에 같은 게 있는지 보는 함수 두개가 필요한데

 

같은 게 있는지 보는 함수에서는

-판에서 제일 긴 배열을 센 maxCount와 이어지는 배열이 나올때마다 세줄 cnt를 선언하고

-for문을 돌면서 같을때마다 cnt를 증가시키고 maxCount와 계속 비교하면서 maxCount에 계속 큰 값이 들어가도록 함

-RRPR 처럼 중간에 달라질 경우가 있으니까 else문으로 다시 cnt를 1로 만들어줌

 

메인문에서는 행이 다를 경우와 열이 다를 경우로 크게 나눠서, 다를때마다 계속 swap해서 maxCount를 봐줘야한다

 

for문을 돌다가 행이 다를 경우을 만나면 둘이 자리를 바꿔서  row()와 col()을 해서 maxCount 한번 보고

다시 돌려놓고 

이거를 계속 반복한다

 

ㅜㅜ

ㅜㅜㅜ

ㅜㅜㅜㅜ

실버 3 무서운 놈이었네용...

모험은 그 자체만으로도 해볼 만한 가치가 있다
-아멜리아 에어하트

댓글