본문 바로가기
📊 Algorithm/BOJ

⚠︎ 백준 - 24267 알고리즘 수업 - 알고리즘의 수행 시간 6/ 24313 알고리즘 수업 - 점근적 표기 1

by 정람지 2024. 4. 6.

백준 단계별 풀기에서

시간 복잡도 카테고리를 끗내자

2문제 있다

 

시간 복잡도 단계

...실행 횟수가 "대략적으로" 얼마나 빨리 커지는지는 비교적 간단하게 알 수 있습니다. 이 문제들에서 출력의 두 번째 줄이 바로 그것입니다.

www.acmicpc.net


24267 

⚠︎  알고리즘 수업 - 알고리즘의 수행 시간

티어 : 🥉2

분류 : 시간복잡도

 

import sys
N = int(sys.stdin.readline())

def men_of_passion(n):
    result = 0
    for i in range(0, n-2):
        for j in range(i+1, n-1):
            for k in range(j+1, n):
                result += 1
    return result

print(men_of_passion(N))
print(3)

 

생각업이그냥 고대로 구현했는데,,.

시간초과남 ㅎㅎ...

1초인데  500,000^3이니까.. 절대안되는거시다

 

 

가운데 식을 잘 보면 n개 중에 3개만 고르는, 즉 조합을 이용하면된다는것을알수잇는거시다

import sys
sys.setrecursionlimit(600000)

N = int(sys.stdin.readline())

def fac(n):
    if n == 0 or n == 1:
        return 1
    return n*fac(n-1)

print(fac(N)//fac(N-3)//fac(3))
print(3)

아니 메모리초과남

그래서 책토리얼 재귀말고반복무ㅜㄴ으로햇더니시간초과남.

500,000*2아님?????오;않됨????

 

 

그럼 저 조합식을 풀면,,,,

import sys

N = int(sys.stdin.readline())

print((N)*(N-1)*(N-2)//6)
print(3)

 

이거됨.

그럼맞음

 

난 허접이다


24313

 

⚠︎  알고리즘 수업 - 점근적 표기 1

티어 : 🥈5

분류 : 시간복잡도

 

 

그냥 자고싶다..

 

 

O(g(n)) = {f(n) | 모든 n ≥ n0에 대하여 f(n) ≤ c × g(n)인 양의 상수 c와 n0가 존재한다}

 

아닛 생각없이 나누기식 썼다가 첨보는거 봤다

런타임 에러 (ZeroDivisionError)

 

뺴고는 스무스하게 맞앗습니다

import sys

a1,a0 = map(int,sys.stdin.readline().split())
c = int(sys.stdin.readline())
n0 = int(sys.stdin.readline())

if (c-a1) == 0 :
    n = 0
else:
    n = a0 / (c-a1)

if (c >= a1) and (n0 >= n):
    print(1)
else:
    print(0)

 

뭐지.

이게 훨씬 쉬운 것 같은데


아 AI 좀 보려고 했는데...

그냥 잘까...