문제 링크

문제 설명

예시

[input]
4 4 6

[output]
5


[input]
5 4 3

[output]
0


[input]
1 7 10

[output]
0


[input]
1 3 3

[output]
1

사고의 흐름

A하고 B는 고정이니까 N-2만큼만 생각하자.
연속된 숫자를 중복을 허용하여 오름차순으로 조합하고, 또 그 합이 중복된거를 빼려면,, 무슨 수학 공식같은게 필요한거 아닌가?

그렇다고, 파이썬 모듈의 중복조합 구하는거를 써서 오름차순으로 정리한다음에, 그 합을 다 저장해놓고, 다른것들의 개수를 하기에는 쫌,,, 무적권 느릴것같은데.

아, 근데 모든 합의 경우의수면 그냥 그냥,,,전체 아니야? 그니까,,

어차피 저 높이까지는 전부 체울거라고, 그니까 중복을 허용하지 않는 합의 총 개수는 저 높이(6) 이 되는거라고. 맞잖아!? 아니지!!! 예를들어 1 2 3만 있고 3개를 사용 가능하다면, 3+3+3 = 9 까지 모두 만들 수있을것 같은데?

이렇게 해서 7개를 만들 수 있다. 그러면 1, 2, 3, 4중 3개만 활용해도 위처럼 될까? 그니까 나는 4개중 4개를 모두 사용해야만 저렇게 연속적으로 만들어지는게 아니냐 하는 의심을 하는거지.

오 3개도 되네, 그러면 2개는 ?? 4개중에서 2개만 사용할 수도 있잖아. 예를들어서, N = 4이고, A = 1, B = 4인경우.

아 그러면 그냥 되는걸로 하자.

모범답안

1. 여기를 누르면 답이 보입니다
def answer(n, a, b):
    if (a > b): return 0
    if n == 1 and a != b: return 0
    n = n-2
    small = a*n
    big = b*n
    return big - small + 1

n, a, b = map(int, input().split())
print(answer(n, a, b))
여기를 누르면 보입니다
def answer(S) :
  n = len(S)
  h = [0] * (n + 1)
  for i in range(n) :
    if S[i] == '<' :
      h[i+1] = max(h[i+1], h[i] + 1)
  for i in range(n, 0, -1) :
    if S[i-1] == '>' :
      h[i-1] = max(h[i-1], h[i]+1)
  print(h)
  return sum(h)

S = input()
print(answer(S))