while문에서 이동 방향을 바꿔가며 대각선일 때 값을 더하는 풀이도 있지만 n이 짝수/홀수일 경우 규칙을 발견해 풀었다.
제공 답변과 n=100일 때까지 출력이 같음을 확인함.
def solution(n):
answer = 0
# n이 짝수면 2, 6, 6, 10, 10, ... (처음엔 하나, 두번씩, 4 더하며) -> 끝에서부터 answer에 더함
# n이 홀수면 4, 4, 8, 8, .., (처음엔 두개, 두번식, 4 더하며) -> 끝에서부터 answer에 더함
if n % 2 == 0:
curNum = n * n - 1
minusNum = 2
cnt = 1
while (curNum > 0):
cnt += 1
answer += curNum
curNum -= minusNum
if cnt == 2:
cnt = 0
minusNum += 4
else:
curNum = n * n
minusNum = 4
cnt = 0
while (curNum > 0):
cnt += 1
answer += curNum
curNum -= minusNum
if cnt == 2:
cnt = 0
minusNum += 4
return answer
n1 = 3
ret1 = solution(n1)
print("solution 함수의 반환 값은", ret1, "입니다.")
n2 = 2
ret2 = solution(n2)
print("solution 함수의 반환 값은", ret2, "입니다.")
'에러 잡기 > 문제 풀이' 카테고리의 다른 글
백준 2193 이친수 (0) | 2021.04.15 |
---|---|
백준 13913 숨바꼭질4 (0) | 2021.04.09 |
백준 12851 숨바꼭질 2 (0) | 2021.04.03 |
백준 16953 A->B (0) | 2021.03.30 |
백준 7562 나이트의 이동 (0) | 2021.03.26 |
댓글