소스 코드
T = int(input())
for tc in range(1,1+T):
n,p = map(int,input().split())
res = 1
cnt = n - n//p*p
for q in range(p-cnt):
res *= (n//p)
for w in range(cnt):
res *= (n//p+1)
print('#{} {}'.format(tc,res))
해결 방법
1. 조합으로 해결하려 했는데, 연산이 너무 많아질 것이라 생각
2. 10 3 의 최대 값은 3 * 3 * 4 / 20 5 의 최대 값은 4 * 4 * 4 * 4 * 4에서 아이디어를 얻음
3. (n//p) * (n//p) * (n//p+1) ... 의 형태로 최대 값을 구할 수 있을 것이라 가정
4. cnt = n - n//p*p 를 통해 (n//p+1)을 몇 번 사용할 것인지를 계산
5. 이후 p-cnt만큼 (n//p)를 곱하고, cnt만큼 (n//p+1)을 곱하여 문제 해결
느낀 점
아이디어 문제가 맞는지는 모르겠다...
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] 가랏! RC카! - PYTHON #1940 (0) | 2021.06.09 |
---|---|
[SWEA 코딩] [SW 모의역량 테스트] 특이한 자석 - PYTHON #4013 (0) | 2021.06.08 |
[SWEA 코딩] S/W 문제해결 응용 공통조상 - PYTHON #1248 (0) | 2021.06.06 |
[SWEA 코딩] S/W 문제해결 응용 금속막대 - PYTHON #1259 (0) | 2021.06.05 |
[SWEA 코딩] S/W 문제해결 응용 K번째 접미어 - PYTHON #1256 (0) | 2021.06.05 |