
✔️ D3
1부터 n까지의 합을 구하는 중간 과정에서 p와 일치하는 값이 존재한다면
맨 처음에 한 층을 움직이지 않는다를 선택하면 가장 최대로 p와 겹치지 않게 이동이 가능하다.
dp라고 해놓고 풀긴 했는데, 막상 풀이를 보니 dp가 아니라 단순 구현으로 생각된다.
# 높은 곳으로
# dp
import sys
input = sys.stdin.readline
def dp (n, p):
r = n * (n + 1) // 2
f = 0
for i in range(1, n + 1):
f += i
if f == p:
return r - 1
return r
if __name__ == "__main__":
t = int(input())
for testcase in range(t):
n, p = map(int, input().split())
result = dp(n, p)
print(result)
새롭게 알게된 삼성에서 운영하는 학습 사이트이다.
D3 정도면 silver 난이도정도 되는 느낌이다.
백준에도 아직 풀지 않은 문제가 가득하지만 다양하게 접해볼수록 좋다고 생각하니 좋은 문제가 있으면 풀어보는 식으로 참고하면 좋을 것 같다!