알고리즘공부(Algorithm Study)/기본개념(Concept)

시간 제한과 메모리 제한

Chaany 2024. 8. 9.
728x90

알고리즘 문제에서 시간 제한, 메모리 제한을 반드시 고려해야합니다, 파이썬으로 문제를 풀 때는 다음과 같은 점들을 고려해야 합니다.

 

1. 시간 복잡도

 

시간 제한이 1초라는 것은 대략적으로 1초 내에 실행될 수 있는 연산의 수를 의미합니다.

파이썬에서는 일반적으로 초당 약 1억 번(10^8)의 연산을 처리할 수 있다고 추정할 수 있습니다.

시간 복잡도에 따라 처리할 수 있는 최대 입력 크기는 다음과 같이 예상할 수 있습니다:

O(1): 상수 시간, 입력 크기와 상관없이 즉시 처리 가능

O(log N): 수백만 이상의 입력도 처리 가능

O(N): 최대 약 10^7 ~ 10^8 크기의 입력을 처리 가능

O(N log N): 최대 약 10^6 ~ 10^7 크기의 입력을 처리 가능

O(N^2): 최대 약 10^4 크기의 입력을 처리 가능

O(2^N): 최대 20 이하의 입력을 처리 가능

O(N!): 최대 10 이하의 입력을 처리 가능

 

2. 메모리 제한

파이썬에서 각 데이터 타입의 메모리 사용량은 다음과 같습니다:

int: 파이썬의 정수는 무제한 크기이지만, 일반적으로 28바이트를 사용합니다.

float: 8바이트

list: 요소의 개수에 비례하여 메모리 사용, 요소 자체의 메모리 사용량에 리스트의 오버헤드가 추가됩니다.

dictionary: 요소의 개수와 각각의 키와 값의 메모리 사용량에 비례하여 메모리 사용

따라서, 예를 들어 리스트에 10^7개의 정수를 저장하면 대략 280MB 정도의 메모리를 사용하게 됩니다. 예를 들어 메모리제한이 256MB일 경우 제한을 넘어가므로, 이러한 대용량 데이터를 다룰 때는 효율적으로 메모리를 관리해야 합니다.

 

3. 입력과 출력

입력 데이터의 크기나 출력을 효율적으로 처리하기 위해 sys.stdin.readline과 같은 방법을 사용하여 I/O를 최적화하는 것도 중요합니다.

 

728x90

댓글