For Programmer
SWEA 2805 파이썬 문제풀이(농작물 수확하기 ) 본문
728x90
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV7GLXqKAWYDFAXB
위 문제는 규칙을 잘 살펴야 한다. 규칙을 보면 중간을 기준으로 첫번째 행 부터 ~ 중간까지는 해당 행의 인덱스 만큼 양옆으로 나가면서 더해준다.
다시 반대로 마지막 행 부터 ~ 중간 뒤까지는 (전체 길이 - 현재 행의 인덱스 + 1) 만큼 양옆으로 나가면서 더해준다.
여기서 중요한점은 해당 행의 중간 지점은 반드시 더해준다는 것이다. 이를 이용해 간단히 코드를 구현할 수 있다.
# import sys
# sys.stdin = open('input.txt', 'r')
T = int(input())
for order in range(1, T + 1):
N = int(input())
array = [list(map(int, input())) for _ in range(N)]
mid_idx = (N // 2) # 중앙 인덱스를 설정해준다.
sum_ = 0 # 합을 출력할 변수 선언
# 행을 기준으로 0부터 ~ 절반까지 돈다.
for i in range((N // 2) + 1):
sum_ += array[i][mid_idx] # 중앙값은 무조건 + 해준다.
for j in range(1, i + 1): # 그 후 현재 행의 인덱스 만큼 양옆으로 가면서 더해준다.
sum_ += array[i][mid_idx - j]
sum_ += array[i][mid_idx + j]
# 행을 역으로 끝 부터 ~ 절반 전까지 돈다.
for i in range(N - 1, N // 2, -1):
sum_ += array[i][mid_idx] # 중앙값은 무조건 + 해준다.
for j in range(1, N - i): # 그 후 (전체 길이 - 현재 행의 인덱스 + 1) 만큼 양옆으로 가면서 더해준다.
sum_ += array[i][mid_idx - j]
sum_ += array[i][mid_idx + j]
print(f'#{order} {sum_}')
728x90
'코팅테스트 > 백준 문제 모음' 카테고리의 다른 글
SWEA 1221 파이썬 문제풀이(GNS) (0) | 2022.02.10 |
---|---|
SWEA 6190 파이썬 문제풀이(정곤이의 단조 증가하는 수) (0) | 2022.02.10 |
SWEA 1979 파이썬 문제풀이(어디에 단어가 들어갈 수 있을까) (0) | 2022.02.09 |
SWEA 4466 파이썬 문제풀이(최대 성적표 만들기) (0) | 2022.02.08 |
SWEA 1961 파이썬 문제풀이(숫자 배열 회전) (0) | 2022.02.08 |
Comments