코딩

[BOJ] 1503 세 수 고르기 Python

척척석사아님 2024. 1. 10. 16:00
728x90
import math
N,M = map(int,input().split())
A = list(map(int,input().split()))
num = []
for i in range (1,1050):
    if i not in A:
        num.append(i)
m = len(num)
val = 1e9
for i in range (0,m):
    if num[i] ** 3 > N + val:
        break
    for j in range (i,m):
        for k in range (j,m):
            val = min(val, int(math.fabs(N - num[i] * num[j] * num[k])))
print(val)

 

브루트포스로 계산하지만, 시간을 어떻게 더 단축할 수 있을지가 관건이었던 문제

 

 

추가 기재)

 

import math
N,M = map(int,input().split())
A = list(map(int,input().split()))
num = []
for i in range (1,1050):
    if i not in A:
        num.append(i)
m = len(num)
val = 1e9
for i in range (0,m):
    if num[i] ** 3 > N + val:
        break
    for j in range (i,m):
        if num[i] * num[j] * num[j] > N + val:
            break
        for k in range (j,m):
            val = min(val, int(math.fabs(N - num[i] * num[j] * num[k])))
print(val)

 

for j 에 있어서도 같이 제한 조건을 넣어줌으로서 훨씬 연산이 빨라진 것을 확인할 수 있었다 !

 

 

 

 

'코딩' 카테고리의 다른 글

[BOJ] 1158 요세푸스 수열  (1) 2024.02.09
[BOJ] 28449 누가 이길까  (1) 2024.02.07
[BOJ] 10026 적록색약 Python  (1) 2024.01.05
[BOJ] 7569 토마토 Python  (0) 2024.01.05
[BOJ] 2312 수 복원하기 Python  (1) 2024.01.04