본문 바로가기

알고리즘 삽질장

[인프런] 사과나무(다이아몬드)

반응형


문제설명

사과나무 다이아몬드 모양

 

위 그림과 같이 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