https://www.acmicpc.net/problem/15815

 

15815번: 천재 수학자 성필

길이가 100이 넘지 않는 수식이 예제 입력과 같이 공백 없이 입력된다. 수식은 0부터 9까지의 숫자와 연산자 '+', '-', '*', '/' 로만 이루어져 있다. 또한, 수식의 계산 중간 과정의 모든 결과는 항상 2

www.acmicpc.net

https://learn.microsoft.com/ko-kr/cpp/c-language/postfix-operators?view=msvc-170

 

후위 연산자

자세한 정보: 후위 연산자

learn.microsoft.com

후위 연산자와 그 계산 결과를 코딩하는 문제. stack을 관리하여 풀 수 있다.

 

data = input()
stack = []

for i in data:
    if i == '+':
        a = stack.pop()
        b = stack.pop()
        stack.append(a + b)
    elif i == '-':
        a = stack.pop()
        b = stack.pop()
        stack.append(b - a)
    elif i == '*':
        a = stack.pop()
        b = stack.pop()
        stack.append(a * b)
    elif i == '/':
        a = stack.pop()
        b = stack.pop()
        stack.append(b // a)
    else:
        stack.append(int(i))
    print(stack)

print(*stack)

 

https://www.acmicpc.net/problem/1024

 

1024번: 수열의 합

첫째 줄에 N과 L이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이고, L은 2보다 크거나 같고, 100보다 작거나 같은 자연수이다.

www.acmicpc.net

 

n, l = map(int, input().split())

for i in range(l, 101):
    x = n / i - (i + 1) / 2
    if int(x) == x:
        x = int(x)
        if x + 1 >= 0:
            for j in range(x + 1, x + i + 1):
                print(j, end=" ")
            break
else:
    print(-1)

브루트 포스로 풀면 시간 초과가 나는 문제.

마지막 else문에 대해서 의아하게 생각할 수도 있다.

for 문이 break를 만나지 않고 정상적으로 종료되었을 때 else로 진입이 가능하다.

 

+ Recent posts