반응형
Python3 는 시간초과 가 발생합니다.
itertools.permutations
함수가 시간이 오래 걸리기 때문입니다. PyPy3 로 변경하면 통과됩니다.
저는 개인적으로 알고리즘 효율성에 큰 의미를 두지는 않습니다. 효율성이 중요하지 않다는건 아닌데, 실무를 하다보니 주어진 개발 기간을 코드의 효율을 개선하는데 투자하기 보다는 전체 설계를 개선할 수 있는 코드 또는 가독성이 좋아지는 코드를 짜는데 시간을 투자하는게 생산성이 더 높다고 생각합니다. 기간 내에 정확하게 개발해서 출시한 뒤에 효율이 크게 뒤떨어지는 부분부터 제품을 개선해 나가는 재미도 있으니까요. 당연히 효율 높은 코드를 바로바로 구현할 수 있도록 훈련을 지속적으로 하면 생산성과 효율 모두 달성할 수 있으니, 코딩 테스트로 연습할 때는 당연히 효율성을 고려해야 합니다. 다만 언어 특성으로 인해 시간초과가 발생하는 부분은 넘어가도 되지 않을까요? ㅠ.ㅠ
import itertools
n = int(input())
numbers = list(map(int, input().split()))
operators_numbers = list(map(int, input().split()))
operators = []
# 0 = 덧셈 / 1 = 뺄셈 / 2 = 곱셉 / 3 = 나눗셈
for i in range(4):
for _ in range(operators_numbers[i]):
operators.append(i)
min_value = 10 ** 10
max_value = -min_value
for ordered_operators in itertools.permutations(operators, len(operators)):
total = numbers[0]
for i in range(len(ordered_operators)):
if ordered_operators[i] == 0:
total += numbers[i+1]
elif ordered_operators[i] == 1:
total -= numbers[i+1]
elif ordered_operators[i] == 2:
total = int(total * numbers[i+1])
elif ordered_operators[i] == 3:
total = int(total / numbers[i+1])
if total > max_value:
max_value = total
if total < min_value:
min_value = total
print(max_value)
print(min_value)
반응형
'Develop > 코딩인터뷰' 카테고리의 다른 글
[코딩인터뷰] 백준 15684번 (0) | 2021.03.20 |
---|---|
[코딩인터뷰] 백트래킹 Back tracking (0) | 2021.03.20 |
[코딩인터뷰] 백준 14889번 (0) | 2021.03.19 |
[코딩인터뷰] 백준 9663번 (0) | 2021.03.19 |
[코딩인터뷰] 백준 2661번 (0) | 2021.03.19 |
꾸준히 노력하는 개발자 "김예건" 입니다.