알고리즘 팁 - 시간초과가 뜰 때 대처. :: 찬찬히 로봇 메이커
반응형

1. while문 안을 조사한다.

시간초과가 뜨면 보통 while문에서 뜨게 된다. 그 말은 while안에서 답이 안나왔을 가능성이 크다. 이럴 때에는 break의 조건이나 위치를 한 번 더 생각해본다.

2. 동적 할당을 어설프게 쓰지 말자.

정적 할당으로 원하는 만큼 배열을 만들면 에러가 날 수 있다. ex) cin >> n; int arr[n];

gcc버전에 따라서 다르기 때문에 이런식으로 쓰면 될 수도 있고 안 될수도 있다. 그러면 동적할당을 쓰는게 편한데..

int * arr = new int [];

이렇게 쓰면 되는데 확실히 알고 쓰지 않으면, 예를 들어 위의 대괄호를 소괄호로 바꿔쓴다거나 하면 시간초과로 문제를 실패할 수도 있다. 동적할당은 완벽하게 쓰자.

3. 누가 봐도 큰 수를 조심하자.

주어지는 변수의 범위가 K(1<=K<=2,000,000) 이런 것들이 있다. 이 때에는 모두를 조사하지 않는 예외 조건을 붙이거나 최소한으로 계산할 수 있도록 해야한다. 하지만 여기서 중요한 것은 테스트 코드를 실행시켰는데 틀렸다는 것과 시간초과가 같이 뜬다면 그냥 틀린거다.

 

추후에 추가사항이 있으면 더 붙입니다.

 

 

 

반응형

+ Recent posts