만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

range

시간 제한0.5초메모리 제한1024 MB

요약
주어진 Python range 호출을 읽고, 같은 수열을 만드는 range 호출 중 사전순으로 가장 앞서는 문자열을 출력합니다.
난이도

보통10점 중 4점

유형
구현, 수학
정답자
아직 제출이 없습니다

문제

SNUPC의 지원 언어인 Python에는 range라는 class가 있다. 이 class는 유한 등차수열을 표현하려고 만들어졌다.

유한 등차수열 {ai}=[a0,…,aL−1]\{a_i\} = [a_0, \ldots, a_{L-1}]은 정수 s, e, d(d ≠\ne 0)로 특징지을 수 있다. 초항이 s이고 공차가 d인 등차수열 {Di}\{D_i\}의 원소 x 중 ∣d∣ds≤∣d∣dx<∣d∣de\frac{|d|}{d} s \le \frac{|d|}{d} x < \frac{|d|}{d} e를 만족하는 것을 모두 모은 유한 부분수열이다. 예를 들어 s = 0, e = 5, d = 1이면 [0, 1, 2, 3, 4]이다.

유한 등차수열의 길이는 그 수열에 속한 수의 집합의 크기이다. 위 예에서 길이는 5이다. 두 유한 등차수열 {ai}\{a_i\}와 {bi}\{b_i\}는 길이 L이 같고, 모든 정수 0 ≤\le i << L에 대해 ai=bia_i = b_i이면 같다.

range는 세 가지 문법을 지원한다.

  • range(a)는 s = 0, e = a, d = 1인 수열을 나타낸다.
  • range(a,b)는 s = a, e = b, d = 1인 수열을 나타낸다.
  • range(a,b,c)는 s = a, e = b, d = c인 수열을 나타낸다. 이때 c는 0이 아니어야 한다.

Python은 range끼리 같은지 비교할 때 각 range가 나타내는 수열로 비교한다. 예를 들어 range(5)와 range(0,5)는 모두 [0, 1, 2, 3, 4]를 나타내므로 같다. 수열의 길이는 0일 수도 있다. range(5,9,-3)과 range(7,2)는 모두 길이가 0이므로 같다.

당신이 할 일은 Python의 range를 하나 받아, 그와 같다고 Python이 판단하는 range를 출력하는 것이다.

입력

첫 줄에 range가 주어진다. 문자열의 각 문자는 (),-0123456789aegnr 중 하나이다. 괄호 안의 a, b, c는 절댓값이 10910^9보다 작은 정수로 바뀌어 주어진다.

정수 n을 나타내는 문자열은 다음과 같다. n이 0보다 크면 10진법 숫자로만 이루어지며 첫 글자는 0이 아니다. n이 0이면 항상 0이다. n이 0보다 작으면 첫 글자는 -이고, 나머지 문자열은 -n을 나타내는 문자열이다.

range의 인자는 하나, 둘, 셋 모두 올 수 있다.

출력

첫 줄에 입력과 같다고 Python이 판단하는 range를 나타내는 문자열을 출력한다. 정수의 표현은 입력 조건과 같아야 하며, 각 수의 절댓값이 반드시 10910^9보다 작을 필요는 없다.

가능한 문자열이 여럿이면 사전 순으로 가장 작은 문자열을 출력한다. 이때 각 문자는 ASCII 순서, 즉 (),-0123456789aegnr 순서(앞에 있을수록 작음)로 비교한다.

예제3

  1. 예제 1

    입력
    range(37,90,5)
    
    예상 출력
    range(37,88,5)
    
  2. 예제 2

    입력
    range(24,117,53)
    
    예상 출력
    range(24,100,53)
    
  3. 예제 3

    입력
    range(-2,10,30)
    
    예상 출력
    range(-2,-1)