반응형

@notepad_jj2

츄르사려고 코딩하는 코집사입니다.


1. [구름LEVEL] 구름 태민이의 취미 파이썬(Python)

1) 문제 출처

https://level.goorm.io/exam/49094/%ED%83%9C%EB%AF%BC%EC%9D%B4%EC%9D%98-%EC%B7%A8%EB%AF%B8/quiz/1

 

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io

 

2. 문제

태민이는 주사위를 수집하는 취미를 가지고 있습니다. 주사위의 모양과 색깔은 각기 다르며, 크기 또한 다릅니다. 태민이는 지금까지 모은 N개의 주사위가 너무 난잡하게 보관해놓고 있어서 정리를 결심했습니다. 그래서 우선 N개의 주사위를 크기 순서대로 정리해보려고 마음먹었습니다.

그렇게 주사위를 순서대로 정렬시켜보니 각 변의 길이가 1부터 N까지 모두 있는 것을 알게 되었습니다. 이 사실이 매우 신기했던 태민이는 이 주사위들의 부피의 합은 어떻게 될지 궁금해졌습니다. 태민이가 현재 가지고 있는 모든 주사위의 부피의 합은 얼마일까요? 태민이의 궁금증을 풀어주세요!

 

 

 

3. 풀이

- N값을 입력 받아서, 1부터 N+1까지 반복문을 도는데 i의 3제곱을 sum에 더한다.

- 마지막에 1000000007로 나눈 나머지를 출력하면 된다.

- 아니다. 위로 풀면 마지막에 시간초과 뜬다.

- 그래서, 세제곱의 합 공식을 사용해야 한다.

- 제곱의 합 경우에는 N(N+1)(2N+1) / 6이다.

- 근데, 여기서 세제곱의 합 공식은 (N(N+1) / 2)^2 이다.

 

4. 소스 코드

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
import sys
input=sys.stdin.readline

N = int(input())

sum = 0
for i in range(1,N+1) : 
	sum += i**3

print(sum%1000000007)

 

정답 코드

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
N = int(input())

print((N*(N+1) // 2)**2 % 1000000007)

 

위의 코드를 좀 더 보기 쉽게 풀면 아래 코드처럼 된다.

# -*- coding: utf-8 -*-
# UTF-8 encoding when using korean
N = int(input())
sum = (N*(N+1) // 2)

print(sum**2 % 1000000007)

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기