[PYTHON/파이썬] 2563 색종이

    https://www.acmicpc.net/problem/2563

     

    2563번: 색종이

    가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

    www.acmicpc.net

     

    문제 풀이

    • 크기가 1인 사각형은 4개의 좌표로 구성된다.
    • 기준 좌표를 하나 정하고 그 좌표의 개수를 세서 크기를 구한다 (=> solution1 -sum으로 구하기)
    • 또는 중복되지 않은 좌표의 개수를 구한다.( => solution2 - set으로 구하기)

    solution1-sum으로 구하기

    import sys
    
    n = int(sys.stdin.readline().strip())
    # 크기가 100*100인 이중리스트 생성
    matrix = [[0]*100 for _ in range(100)] 
    
    for _ in range(n):
        x,y = map(int,sys.stdin.readline().strip().split())
    
        # 크키가 1인 왼쪽아래 좌표를 기준으로 색종이의 크기를 계산한다.
        for x_p in range(x,10+x):
            for y_p in range(y,10+y):
                matrix[x_p][y_p] = 1
    
    print(sum(map(sum, matrix)))

    solution2 - 중복된 영역의 좌표의 개수 구하기

    import sys
    
    n = int(sys.stdin.readline().strip())
    total_point = set()
    for _ in range(n):
        x,y = map(int,sys.stdin.readline().strip().split())
        for x_p in range(x,10+x):
            for y_p in range(y,10+y):
                total_point.add((x_p,y_p))
    print(len(total_point))

    댓글