[백준/파이썬] 16504번 풀이
업데이트:
문제 정보
- 문제 출처: 백준 온라인 저지
- 문제 링크: 16504번 문제
- 문제풀이 코드 GitHub 링크
- 제출 언어: Python 3
풀이
문제
종이접기와 수학을 좋아하는 주성이는 종이접기와 수학을 한꺼번에 할 수 있는 놀이를 찾아냈다. 바로 N×N 크기를 가지는 색종이의 각 칸에 수를 적어놓고, 색종이를 반으로 접을 때마다 겹치는 부분의 수들을 더하는 것이다. 그리고 이 작업을 색종이를 더는 접을 수 없을 때까지 반복했을 때, 가장 마지막에 남는 수를 구하는 놀이이다.
아래의 예시는 위에서 설명한 놀이의 과정을 2×2 크기의 색종이를 사용하여 상세하게 나타낸 그림이다.
-
색종이를 왼쪽에서 오른쪽으로 정확히 반을 접는다.
-
겹치는 두 칸에 있는 수를 서로 더한다. 위 그림에서는 (1, 1)과 (1, 2)의 두 칸이 겹치고, (2, 1)과 (2, 2)의 두 칸도 겹치는 부분이다.
-
더한 값을 색종이 위에 다시 적는다.
-
색종이를 아래쪽에서 위쪽으로 정확히 반을 접는다.
-
겹치는 두 칸에 있는 수를 서로 더한다. …
입력 요약
첫 번째 줄에는 색종이의 가로, 세로 길이를 의미하는 정수 N (N = 2m, 1 ≤ m ≤ 10)이 주어진다.
두 번째 줄부터 마지막 줄까지는 N×N 크기의 색종이 정보가 주어지며, 색종이의 각 칸에는 정수 K (1 ≤ K ≤ 100,000)가 주어진다.
출력 요약
색종이를 반으로 접으면서 겹치는 부분의 수들을 더하는 과정을 반복했을 때, 가장 마지막에 남는 수를 출력한다.
코드
s=0
for i in range(int(input())):s+=sum(map(int,input().split()))
print(s)
설명
핵심은 구현 관점에서 종이접기와 수학을 좋아하는 주성이는 종이접기와 수학을 한꺼번에 할 수 있는 놀이를 찾아냈다. 바로 N×N 크기를 가지는 색종이의 각 칸에 수를 적어놓고, 색종이를 반으로 접을 때마다 겹치는 부분의 수들을 더하는 것이다. …를 만족하도록 로직을 구성하는 것입니다.
코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.
경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.
댓글남기기