알고리즘 공부/파이썬(Python)

백준 2567번 색종이 - 2 파이썬

마달랭 2024. 6. 24. 21:59
반응형

리뷰

구현 문제를 오랜만에 접해서 그런지 많이 헤매었다. 색종이 넓이 구하는 문제보다는 난이도가 높은 것 같았다.

문제 풀이

100 * 100 크기의 2중 배열을 0으로 초기화 해준 후 입력 받은 x, y좌표 값의 +10만큼을 모두 1로 바꾸어 주었다.

이후 이중 for문을 통해 해당 좌표가 1일 경우 상하좌우로 인접한 좌표의 값이 0일 경우 길이를 더해주었다.

문제에 색종이가 도화지 밖으로 나가는 경우는 없다고 정의 하였으므로 가장자리에 인접한 경우도 길이를 더해주었다.

추천 반례

없음

정답 코드

def q2567():
    # 백준 2567번 색종이 - 2 파이썬
    n = int(input())
    dp = [[0] * 101 for _ in range(101)]
    result = 0
    for _ in range(n):
        x, y = map(int, input().split())
        for i in range(x, x + 10):
            for j in range(y, y + 10):
                dp[i][j] = 1
    for i in range(100):
        for j in range(100):
            if dp[i][j]:
                if i == 0 or dp[i - 1][j] == 0:
                    result += 1
                if i == 99 or dp[i + 1][j] == 0:
                    result += 1
                if j == 0 or dp[i][j - 1] == 0:
                    result += 1
                if j == 99 or dp[i][j + 1] == 0:
                    result += 1
    print(result)
q2567()
728x90
반응형