반응형
문제설명
위 그림과 같이 N*N처럼 5*5로 사과나무가 존재할 때, 색깔로 칠해진 사과나무에 존재하는 사과들의 개수 합을 구하여라. 사과들의 개수는 한 칸 내에 있는 값을 의미한다.
사고과정
- 처음에 어떻게 구현해야 할지 몰랐다...
- 행을 하나씩 돌면서 시작점, 끝점 인덱스인 s와 e를 변수로 정의해서 풀어야 했다. 이 때, s, e의 초기값은 N을 2로 나눈 몫인 즉, 가장 가운데 지점부터 시작한다. 그래야 다이아몬드의 맨 윗점을 의미하니깐!
- 그리고 행이 중간까지 갈때까지는 s를 -1, e를 +1해주고 그 이후 행부터는 s를 +1, e를 -1 해주면서 더해야 한다.
풀이(스스로 못 푼 풀이)
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
# Solution
res = 0
s = e = n // 2
for i in range(n):
for j in range(s, e+1):
#print(i, j)
res += arr[i][j]
if i < n // 2:
s -= 1
e += 1
else:
s += 1
e -= 1
print(res)
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[인프런] 봉우리 (0) | 2021.11.12 |
---|---|
[인프런] 곳감(모래시계) (0) | 2021.11.12 |
[BOJ] 1748번 - 수 이어 쓰기 1 (0) | 2021.11.05 |
[BOJ] 6064번 - 카잉 달력 (0) | 2021.11.05 |
[BOJ] 14500번 - 테트로미노 (0) | 2021.11.05 |