4/13 스터디 문제

hyejun sang·2022년 4월 13일
0

알고리즘

목록 보기
18/28
post-thumbnail

1번 문제.
https://www.acmicpc.net/problem/3085
-> 사탕 게임

1번 문제 풀이 코드

import sys

# nxn 보드 크기 입력
n = int(sys.stdin.readline())
# 사탕 집어넣을 리스트
candies = []
# 먹을 사탕 갯수 값 초기화
candy_cnt = 1

# 사탕 색별 리스트에 담기
for _ in range(n):
    candies.append(list(map(str, sys.stdin.readline())))

# 행의 사탕들 확인
def row_check():
    global candy_cnt
    # 2차원 리스트 안의 값을 하나하나 비교
    for i in range(n):
        row_count = 1 # 행 사탕 갯수 세기
        for j in range(n-1):
            # 행 값들을 비교
            if candies[i][j] == candies[i][j+1]:
                row_count += 1
                # 상근이가 먹을 사탕 갯수는 최대 갯수
                candy_cnt = max(row_count, candy_cnt)
            else:
                row_count = 1 # 이거 안하면 틀림.....

# 열의 사탕들 확인
def col_check():
    global candy_cnt
    # 2차원 리스트 안의 값을 하나하나 비교
    for i in range(n):
        col_count = 1 # 열 사탕 갯수 세기
        for j in range(n-1):
            # 열 값들을 비교
            if candies[j][i] == candies[j+1][i]:
                col_count += 1
                # 상근이가 먹을 사탕 갯수는 최대 갯수
                candy_cnt = max(col_count, candy_cnt)
            else:
                col_count = 1 # 이거 안하면 틀림.....

# 사탕 근접 위치 이동
for i in range(n):
    for j in range(n-1):
        # 만약 행 사이에서 근접 사탕 색이 다르다면
        if candies[i][j] != candies[i][j+1]:
            # 행 근접 위치 교환
            candies[i][j], candies[i][j+1] = candies[i][j + 1], candies[i][j]
            # 행 체크 -> 갯수 세고
            row_check()
            # 열 체크 -> 갯수 세고
            col_check()
            # 다시 제자리로 돌려놓음 -> 다시 안돌려놓으면 안됨!!
            candies[i][j+1], candies[i][j] = candies[i][j], candies[i][j+1]

        # 만약 열 사이에서 근접 사탕 색이 다르다면
        if candies[j][i] != candies[j+1][i]:
            # 행 근접 위치 교환
            candies[j][i], candies[j+1][i] = candies[j+1][i], candies[j][i]
            # 행 체크 -> 갯수 세고
            row_check()
            # 열 체크 -> 갯수 세고
            col_check()
            # 다시 제자리로 돌려놓음 -> 다시 안돌려놓으면 안됨!!
            candies[j+1][i], candies[j][i] = candies[j][i], candies[j+1][i]

print(candy_cnt)

=======================================================
6번 틀림.... 겨우 겨우 블로그들 보면서 내 문제 해결
이중 for문을 볼 때 순서를 잘 파악할 것!!

0개의 댓글