본문 바로가기
에러 잡기/문제 풀이

COS PRO 1차 5번 - 소용돌이 수 python

by HJINHA 2022. 4. 11.

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

댓글