[goormlevel] 구름이의 취미

J. Hwang·2024년 7월 8일
0

coding test

목록 보기
10/108

문제

구름이는 주사위를 수집하는 취미를 가지고 있습니다. 구름이가 가지고 있는 N개의 주사위는 모두 크기가 달라서 한 변의 길이가 1인 주사위부터 N인 주사위까지 1개만 가지고 있습니다.
이 때 구름이는 모든 주사위들의 부피를 합한 값을 알고 싶어 합니다. 구름이가 가지고 있눈 주사위의 부피를 합한 값을 출력하시오.


입력

첫 줄에 구름이가 가지고 있는 주사위의 개수 N이 주어집니다.

  • 1 \leq N \leq 10910^{9}

출력

구름이가 가지고 있는 주사위의 부피의 합을 1 000 000 007 로 나눈 나머지를 출력합니다.


내 풀이

# failed answer
def volume_of_dices(n):
	volumes = []
    for i in range(n):
    	a = (i+1)**3
        volumes.append(a)
    return sum(volumes)
    
input1 = int(input())

print(volume_of_dices(input1)%1000000007)

# correct answer
def volume_of_dices(n):
	return ((n*(n+1))//2)**2
    
input1 = int(input())

print(volume_of_dices(input1)%1000000007)

코멘트

구름level 난이도 2 문제들 중 가장 많은 사람이 풀었는데 정답률은 60%가 안되는 문제라서 호기심이 생겼고, 문제도 굉장히 단순해서 왜 정답률이 낮은지 의아했는데, 역시 간단한 문제가 아니었다.

  • point 1 : 출력 형태 (1 000 000 007로 나눈 나머지) 를 놓치지 말 것
  • point 2 : N3N^{3}를 계속 더하는 방식을 사용하면 N이 커지면서 RunTimeError가 뜨고 실패하게 된다. 이 때 세제곱의 합 공식 k=1n\sum_{k=1}^{n} k3k^3 = (n(n+1)2\frac{n(n+1)}{2})2^{2} 을 이용하여 풀어야 한다. 결국 수학 문제나 다름 없음....증명은 Reference 참조.

References

https://level.goorm.io/
https://whitehairhan.tistory.com/308
https://mathbang.net/628#gsc.tab=0

profile
Let it code

0개의 댓글