728x90
반응형
1. 문제 설명
2. 풀이과정
해당 문제는 색종이를 붙이면서 겹치는 부분으로 고려하여 전체 색종이가 붙여진 면적을 계산하는 문제이다.
색종이를 붙일 도화지의 면적을 가로, 세로 100씩 생각하여 2차원 배열로 만든다.
이후 색종이를 붙일 때마다 붙여지는 면적을 1로 바꾼다.
이때 겹치는 부분이 생겨도 그대로 1로만 바꾸기 때문에 겹치는 부분에 대한 계산을 따로 하지 않아도 된다.
마지막에 0에서 1로 바뀐 면적만 계산해 주면 쉽게 결과를 구할 수 있다.
- sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
- 도화지의 면적을 2차원 배열로 하여 면적 1당 1칸의 공간을 만들어 0으로 초기화한다. paper = list(list(0 for _ in range(100)) for _ in range(100))
- 전체 붙일 색종이의 수를 입력받는다. T = int(sys.stdin.readline())
- 색종이의 수만큼 반복하며 for _ in range(T)
- 색종이를 붙인 좌표를 입력받는다. x, y = map(int, sys.stdin.readline().split())
- 각 색종이는 각 변이 10인 정사각형 모양이므로 각 변을 10칸씩 이동하며 for i in range(10): for j in range(10)
- 색종이의 면적을 1로 바꿔준다. paper[x + i][y + j] = 1
- 전체 색종이가 붙은 면적을 저장할 변수를 생성하고 초기화한다. answer = 0
- 도화지를 불러와 for i in paper
- 색종이가 붙은 면적의 개수를 세어 더해준다. answer += i.count(1)
- 최종 정답을 출력한다. print(answer)
반응형
3. 소스코드
import sys
paper = list(list(0 for _ in range(100)) for _ in range(100))
T = int(sys.stdin.readline())
for _ in range(T):
x, y = map(int, sys.stdin.readline().split())
for i in range(10):
for j in range(10):
paper[x + i][y + j] = 1
answer = 0
for i in paper:
answer += i.count(1)
print(answer)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2903번 : 중앙 이동 알고리즘 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.17 |
---|---|
[백준] 2720번 : 세탁소 사장 동혁 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.16 |
[백준] 11005번 : 진법 변환 2 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.14 |
[백준] 2745번 : 진법 변환 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.12 |
[백준] 10798번 : 세로읽기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.08 |
[백준] 2566번 : 최댓값 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.06 |
[백준] 25206번 : 너의 평점은 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.04 |
[백준] 10988번 : 팰린드롬인지 확인하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.10.02 |